6

私は次のようにPythonでクラスをハッキングしてきました:

def hack(f,aClass) :
  class MyClass(aClass) :
     def f(self) :
       f()
  return MyClass

A = hack(afunc,A)

私にはかなりきれいに見えます。クラス A を取り、そこから派生した新しいクラスを作成します。このクラスには、f を呼び出す追加のメソッドがあり、新しいクラスを A に再割り当てします。

これは Python のメタクラス ハッキングとどう違うのですか? これに対してメタクラスを使用する利点は何ですか?

4

3 に答える 3

1

メタクラスはクラスのクラスです。IMO、ここの男は、いくつかのユースケースを含めて、かなり役に立ちました。スタック オーバーフローの質問"MetaClass"、" new "、"cls"、"super" を参照してください。メカニズムとは正確には何ですか? .

于 2009-05-03T00:09:30.353 に答える
1

typecallable も使用できます。

def hack(f, aClass):
    newfunc = lambda self: f()
    return type('MyClass', (aClass,), {'f': newfunc})

typeメタクラスの世界に入るには、これが最も簡単な方法だと思います。

于 2009-05-27T06:40:19.413 に答える