類相關的知識
在python2中的區分:html
經典類:python
1
2
|
class
School:
pass
|
新式類:函數
1
2
|
class
School(
object
):
pass
|
在python3中以上兩種均爲新式類post
屬性:ui
- 數據屬性:就是變量
- 函數屬性:就是函數,在面向對象裏一般稱爲方法
注:類和對象均用點來訪問本身的屬性url
類的屬性
數據屬性即變量,類的定義與函數又及其類似,其實能夠用函數的做用域來理解類的屬性調用spa
類的數據屬性:code
1
2
3
|
class
School:
Teacher
=
"老王"
print
(School.Teacher)
|
類的函數屬性(通常稱爲方法):htm
1
2
3
4
5
|
class
School:
Teacher
=
"老王"
def
Examination(
self
):
print
(
"%s的班級正在考試"
%
self
)
School.Examination(
"alex"
)
|
查看類屬性:對象
查看類屬性的兩種方式:
- dir(類名) 查出的是一個名字列表
- 類名.__dict__ 查出的是一個字典,key是屬性名,value是屬性值
#注意:類名加點調用本身的屬性實際上就是到屬性字典裏去找東西
class School: Teacher = "老王" def Examination(self): print("%s的班級正在考試"%self) print(dir(School)) #查看類的屬性 print(School.__dict__) #查看類的屬性字典 print(School.Teacher)#同print(School.__dict__["Teacher"]) 調用數據屬性 School.Examination("alex")#同School.__dict__["Examination"]("alex") 調用函數屬性
特殊的類屬性:
class School: """ 文檔 """ Teacher = "老王" def Examination(self): print("%s的班級正在考試"%self) print(School.__name__) #查看類名 print(School.__doc__) #查看文檔 print(School.__base__) #查看類的第一個父類 print(School.__bases__) #查看類全部父類構成的元組 print(School.__dict__) #查看類的屬性 print(School.__module__) #查看類所在哪一個模塊 print(School.__class__) #實例School對應的類(僅新式類中)
對象相關知識
對象是由類實例化而來,實例化結果成爲一個實例或者稱做一個對象
實例化:
class School: """ 文檔 """ Teacher = "老王" def Examination(self): print("%s的班級正在考試"%self) School() #類名加上括號就是實例化(能夠理解函數運行的返回值就是一個實例)
實例屬性:
class School: """ 這是一個學校類 """ dang = "dang" #實例化,init函數不能夠有返回值,返回值爲空 def __init__(self,name,addr,type): self.mingzi = name #p1.mingzi = name self.dizhi = addr #p1.dizhi = addr self.leixing = type#p1.leixing = type #考試 def Examination(self): print("%s正在考試"%self.mingzi) #招生 def Recruit_students(self): print("%s正在招生"%self.mingzi) person = School("oldboy","沙河","私立") person.Examination() """ 一、實例化的過程本質上就是調用__init__的運行 二、self就是實例自己=person 三、class會自動幫__init__返回值 四、實例只有數據屬性,print(person.__dict__) 五、實例調用函數屬性,實際上調用的是類的函數屬性,person.Examination() 六、print(person.dang)跟函數做用域同樣,在本身的做用域找不到會去上一層找 七、類有數據屬性和函數屬性,實例只有數據屬性 八、實例調用函數屬性.class會幫你把實例自己傳給函數 """