デコレータとアプリケーションのクラス

すべてのオブジェクト:

デフテスト():

  印刷()

test.xの= 1

test.y = 2

プリント(テスト.__ dict__に)

フロートフロートタイプ

DEF 12月(OBJ):
     プリント' 123456 ' 
    obj.x = 1 
    obj.y = 2 
    obj.z = 3
     戻りOBJ 
@dec     フー= 12月(フー)
クラスはFoo:
     パス
プリント(Fooの__dict__
クラスデコレータ
DEF(**型付きkwargsからの):
     DEF :12月(OBJ)
         のために K、Y kwargs.items():
           SETATTR(OBJ、K、Y) 
        。OBJ .__ dictの__アップデート(kwargsから)
        を返すobjが
     返す12月
@Typedを(X = 1、Y = 2 クラスはFoo:
     パス
プリント(フー。__dict__
クラスデコレータのリビジョン
クラスはFoo:
     デフ __init__ (自己、キー、expect_type):
        self.key = キー
        self.expect_type = expect_type
     DEF  __set__ (自己、例えば、値):
         プリント' 設定方法' 場合 ではないでisinstance(値、self.expect_type) :
             調達はTypeError(' 错误' 
        のインスタンスを。__dict__ [self.key] = DEF  __delete__ (自己、インスタンス):
         プリント'削除方法' デフ __get__ (自己、例えば、所有者):
         プリント' 入手方法デフ型付き(** kwargsから):
     DEF :12月(OBJ)
         のための K、Y kwargs.items():
           OBJ(SETATTR、 K、フー(K、Y)) 
        。OBJ .__ dictの__アップデート(kwargsからは)
        を返すobjが
     戻る12月
@Typed(名 = strの、年齢= INT)
 クラスすぎる:
     #1 名=はFoo( '名前'、STR) 
    年齢を=フー( '年齢'、int型)
    デフ __init__(自己、名前、年齢):
        self.name = 名前
        self.age = 年齢
T1 =すぎる(' 林南'、29 
t1.nameの
プリント(T1。__dict__
クラス装飾用途

おすすめ

転載: www.cnblogs.com/jintian/p/10958702.html