2013-07-18 69 views
0

我正在擴展Parent類使用組合而不是繼承。我通過從我"Child"方法調用的Parent所示的代碼:過濾調用父方法

class Child(object): 
    def __init__(self, obj): 
     self.obj = obj 

    def __getattr__(self, attr): 
     """Pass properties and method calls to Parent class""" 
     result = getattr(self.obj, attr) 
     return result 

現在一些方法調用(前Parent.method())返回Parent實例。我想要的是在這些情況下能夠返回一個Child實例。我想這樣的事情會做到這一點:

def __getattr__(self, attr): 
     """Pass properties and method calls to Parent class""" 
     result = getattr(self.obj, attr) 
     return Child(result) 

,但如果失敗了:類型錯誤:「兒童」對象不是可調用。我還看到result的類型爲instancemethod,而不是調用該方法的實際結果(這將是Parent實例)。什麼纔是實現這一目標的正確方法?

回答

-1

看起來你可能會重寫變量Child,因爲子實例應該是可調用的。 試試尋找類似於

Child = Child(some_argument)