Python自定義元類的例項講解

2022-09-25 23:30:17 字數 638 閱讀 5277

乙個類沒有宣告自己的元類,預設他的元類就是type,除了使用元程式設計客棧類type,使用者也可以通程式設計客棧過繼承type來自定義元類。

我們可以使用類屬性 __metaclass__ 把乙個類的建立過程,轉交給其它地方。

class a(object):

__metaclass__ = ... # 這個類的建立轉交給其他地方

pass

先定義了類 a,然後定義了乙個類屬性 __metaclass__,這個屬性表示建立類 a 的過程,轉交給其它地方處理。

類屬性 __metaclass__ 可以是乙個方法,也可以是乙個類。

內容擴充套件:

用元類建立類

前面講到過,type 有乙個作用是用於檢查物件的型別,其實它還有另外乙個作用就是作為元類動態地建立類(物件)。

>>> person = type("person", (), )程式設計客棧

>>> person

www.cppcns.com

person 就是乙個類,它等價於:

>>> class person:

... live = true

...>>> person

用元類 type 建立類的語法是:

type(類名,基類元組(可以為空), 屬性字典)

python 元類type建立類的類 自定義元類

class a pass print 列印類 print a print 列印類物件 print a print 類為自己增加屬性 a.attr1 10 print 類拷貝給乙個變數 b a print 判斷某個屬性是否為此類的 print hasattr b,attr1 print 類卓偉乙個引數...

python自定義類

設計乙個person類的3種方式 1 使用內建型別list person mike 23,male 0 姓名,1 年紀,2 性別 print person 0 person 1 person 2 2 使用字典型別dic person1 person2 print person1 name perso...

自定義元類控制類的建立

chinese每次建立由原來的type改為mymeta,因此可以在mymeta內對類進行一些特殊定製 示例一 類名的大小寫強控 class mymeta type def init self,class name,class bases,class dic if not class name.ist...