親クラスのインスタンスを返す関数があります。
def generateParent():
do_stuff
return Parent(some_parameters)
ここで、次の呼び出しの結果を使用して、Parentのサブクラスを初期化しますgenerateParent()
。
class Child(Parent):
def __new__():
return generateParent(some_other_parameters)
問題は、ChildのParentからいくつかのメソッドをオーバーライドしてから、プログラムのChildのインスタンスでそれらを呼び出すと、Childの新しいメソッドの代わりに元のParentメソッドが呼び出されることです。私はここで何か間違ったことをしていますか?ここで自分のタスクに正しいデザインを使用していますか?
編集:ParentにもgenerateParent()にもアクセスできません
解決策(@Paul McGuireの回答に感謝します):
class Child(object):
def __init__(self):
self.obj = generateParent()
def __getattr__(self, attr):
return getattr(self.obj, attr)