在python2中的區分:python
經典類:函數
class School: pass
新式類:ui
class School(object): pass
在python3中以上兩種均爲新式類spa
屬性:code
注:類和對象均用點來訪問本身的屬性對象
數據屬性即變量,類的定義與函數又及其類似,其實能夠用函數的做用域來理解類的屬性調用blog
類的數據屬性:作用域
class School: Teacher = "老王" print(School.Teacher)
類的函數屬性(通常稱爲方法):文檔
class School: Teacher = "老王" def Examination(self): print("%s的班級正在考試"%self) School.Examination("alex")
查看類屬性:it
查看類屬性的兩種方式:
#注意:類名加點調用本身的屬性實際上就是到屬性字典裏去找東西
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會幫你把實例自己傳給函數 """