オブジェクト指向のpython - メタクラス

このクラスは、独自のメタクラスのメタクラスを宣言していない内蔵のメタクラスのタイプを使用することに加えて、我々はまた、キーワード引数メタクラスメタクラスをクラスとして指定されている使用し、その後、継承されたタイプのメタクラスをカスタマイズすることができ、彼のデフォルトのタイプである
 クラスはFoo:
     DEF  __init__ (セルフ):
         合格

F1 =はFoo() オブジェクトインスタンス化のFooでF1を

#の印刷(タイプ(F1))
を印刷(タイプ(フー))
 を印刷(。Fooの__dict__ 

DEF  __init__ (セルフ、名前、年齢):
    self.name = 
    self.age = 年齢

FFO =タイプ(" FFO "、(オブジェクト)、{ ' X ':1、" __init__ "__init__ })
 プリント(逃亡者)
 プリント(逃亡者。__dict__ 

F1 =逃亡者(" アレックス"、20 プリント(F1。__dict__ プリント(f1.name) 

自定制元类
がMyTypeクラス(タイプ):
DEF __init __(自己、A、B、C):
印刷( "機能実行メタクラス")
印刷(セルフ)
#印刷(A)
印刷(B)
印刷(C)

#__call__オブジェクトの背後にあるブラケットは、実行をトリガ。注:()クラス名=オブジェクト、メソッドは、オブジェクトで囲ま__call__に対して行わ即ち、トリガされる:コンストラクタは、オブジェクトによって実行される、すなわちを作成トリガーオブジェクト()またはクラス()()
    __ __callのDEF(セルフ、引数*、** kwargsから):
印刷( "=======>")
印刷(argsを、kwargsから)
OBJ =新しい新しいオブジェクト.__ __(自己)#-----> F1世代のターゲット
.__ INIT __自己(OBJ、引数*)
戻りOBJの

クラスはFoo(=メタクラスがMyType):#=フーがMyType(パラメータ4) - > __ init__ --->がMyType (フー、 'foo'で、(オブジェクト)、{ })
DEF __init __(自己、名):
self.name名=

印刷(フー)

CallメソッドのF1 =はFoo( "アレックス") #はFoo() の実行オブジェクトの
印刷(f1.name)
印刷(f1.name)
印刷(F1 .__ dict__に)



 

おすすめ

転載: www.cnblogs.com/tangcode/p/11484297.html