どのような理解のために我々はすべての検索メタクラスについては、私は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()。こんにちは()
二つの方法の結果と同じ。