元類

一.定義
我們知道類進行實例化之後會產生一個實例,也就是說實例是由類產生的。但是由於在python中一切皆對象,那麼類又是由什麼產生的呢?
在python中我們定義:
元類是類的類,它是產生類的模板;
元類(metaclass)的實例是類,type是python的一個內建元類,用來直接控制生成的類,python中任何一個class定義的類都是由type類實例化產生的對象。不要問我,type類是由哪個類產生的.......
二.定義類的兩種方式
方式1:使用class關鍵字定義
元類
方式2:使用type元類來定義
元類
該部分代碼塊如下:
#類的定義方式一,使用class關鍵字

class School:
    def __init__(self,name,addr):
        self.name = name
        self.addr = addr

    def showinfo(self):
        print("%s學校在%s"%(self.name,self.addr))
# print(School.__name__)
# print(School.__dict__)

#類的定義方式二,使用type元類定義
def __init__(self,name,addr):
    self.name = name
    self.addr = addr
def showinfo(self):
    print("%s學校在%s"%(self.name,self.addr))
    #type函數三個參數,第一個參數是類名,字符串格式;第二個參數是它所繼承的類,元組形式;第三個參數是它的屬性字典,字典形式,可以是數據屬性也可以是函數屬性
TSchool = type('School',(object,),{'__init__':__init__,'showinfo':showinfo,'size':32000})
print(TSchool.__name__)
print(TSchool.__dict__)
tschool = TSchool('浙江大學','浙江省杭州市')      #實例化
print(tschool.size) #查看數據屬性size
tschool.showinfo()  #調用類的showinfo方法

三.自定義元類
我們知道所有未經說明的類的元類都是type,所有的類都是繼承了type元類。
元類

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章