次のように 2 つのクラスを定義しました。
class ClassModel(object):
pass
class FunctionModel(object):
attr = None
def __call__(self):
return self.attr
アイデアは、 のいくつかのコピーを作成しClassModel
、それぞれが から継承するゼロ以上のメソッドを含み、それぞれFunctionModel
独自の属性を持つ必要があります。
と の子を作成するのは問題ありませClassModel
んFunctionModel
。ClassModel
しかし、 の子がインスタンス化されたときに、それらにアタッチされた派生元の関数のようなオブジェクトFunctionModel
が Python によってメソッドとして認識されるように、2 つをアタッチすることに成功しませんでした。
何が起こるか見てください
>>> func = type('func', (FunctionModel,), {'attr': 'someattr'})
>>> func_inst = func()
>>> func_inst
<__main__.func object at 0x968e4ac>
>>> Cls = type('Cls', (ClassModel,), {'func_inst': func_inst})
>>> cls_inst = Cls()
>>> cls_inst.func_inst
<__main__.func object at 0x968e4ac>
どうすればこれで行けますか?