クラスの作成中に、派生クラスの基本クラスで定義されたクラス メソッドを自動的に実行したいと考えています。例えば:
class Base(object):
@classmethod
def runme():
print "I am being run"
def __metclass__(cls,parents,attributes):
clsObj = type(cls,parents,attributes)
clsObj.runme()
return clsObj
class Derived(Base):
pass:
ここで何が起こるかというと、Base が作成されると、''runme()'' が起動します。しかし、Derived が作成されても何も起こりません。
問題は、 Derivedの作成時に ''runme()'' も起動させるにはどうすればよいかということです。
これは私がこれまで考えてきたことです。DerivedのメタクラスをBaseに明示的に設定すると、機能します。しかし、私はそれが起こることを望んでいません。私は基本的に、明示的に設定しなくても、 DerivedがBaseのメタクラスを使用することを望んでいます。