python之類與物件的屬性
阿新 • • 發佈:2018-12-03
類相關的知識
在python2中的區分:
經典類:
class School: pass
新式類:
class School(object): pass
在python3中以上兩種均為經典類
屬性:
- 資料屬性:就是變數
- 函式屬性:就是函式,在面向物件裡通常稱為方法
注:類和物件均用點來訪問自己的屬性
類的屬性
資料屬性即變數,類的定義與函式又及其相似,其實可以用函式的作用域來理解類的屬性呼叫
類的資料屬性:
class School: Teacher = "老王" print(School.Teacher)
類的函式屬性(一般稱為方法):
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() """ 1、例項化的過程本質上就是呼叫__init__的執行 2、self就是例項本身=person 3、class會自動幫__init__返回值 4、例項只有資料屬性,print(person.__dict__) 5、例項呼叫函式屬性,實際上呼叫的是類的函式屬性,person.Examination() 6、print(person.dang)跟函式作用域一樣,在自己的作用域找不到會去上一層找 7、類有資料屬性和函式屬性,例項只有資料屬性 8、例項呼叫函式屬性.class會幫你把例項本身傳給函式 """