元類:Metaclass

zenopan發表於2024-05-08

可以是阿拉丁神燈,也可以是潘多拉魔盒。是底層程式碼邏輯。

type為物件的頂點,所有的物件都建立自type.
object為類繼承的頂點,所有類都繼承自object.

object是所有類的超類,type也是繼承自object.
所有物件建立自type,object也是type的例項。

我們常用的程式碼:
class Myclass:
data=1

執行的是:
class = type(classname,superclasses,attributedict)
執行程式碼時會呼叫
type.new(typeclass,classname,superclasses,attributedict)
type.init(class,classname,superclasses,attributedict)

一旦一個類設定metaclass=。。。,它就不再有原生的type建立,而是呼叫。。。的__call__運算子過載。

正常父類不能對子類的屬性進行操作,但是元類可以。元類,裝飾器、類裝飾器都是超程式設計。

相關文章