カスタム双方向のPythonメタクラス

どのような理解のために我々はすべての検索メタクラスについては、私は2元のクラスを実装して書くことについて書くためにここにいます

カスタムメタクラス継承されたタイプの
クラスLowercaseMeta(タイプ):
     「」 '
    小文字メタクラスにクラス属性名を変更します。
    「」 ' 
    最初の作成#__init__クラス本物の列__new__クラスを

    方法1:
    DEF  __new__ (MCS、名前、塩基、attrsに):
        lower_attrs = {}
         のために K、V attrs.items():
             場合 はない k.startswith(' __ '): 排除マジック方法 
                lower_attrs [k.lower()] = V
             
                lower_attrs [K] = Vの
         戻り型。__new__ (MCS、名前、塩基、lower_attrs)

    方法二:
    DEF __new __(CLS、*引数、** kwargsから): #
         将要替换引数
         new_args = [] 
         引数のArgのための:
             でisinstance場合(引数、辞書):
    #1              low_attrs = {} 
                 ためK、arg.itemsでV(): 
                     STR場合(K).startswith( '__'):#magic方法
    #1                      low_attrs [K] = Vの
                     他に:#排除マジックメソッド
    #1                      low_attrs [STR(K).lower ()] = V 
                 new_args.append(low_attrs) 
             他に:
                 new_args.append(引数)
    #の     戻り値の型.__新しい__(CLS、* new_args、** kwargsから)


クラス LowercaseClass(メタクラス= LowercaseMeta):#1 PY3の 
    BAR = 

    デフハロー(自己):
         印刷こんにちは

この時点で、BAT、ハローすべて小文字で
印刷(DIR(LowercaseClass))
LowercaseClass()。こんにちは()

 

 二つの方法の結果と同じ。

 

おすすめ

転載: www.cnblogs.com/feiquan/p/11110632.html