我使用合成而不是继承来扩展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
现在一些方法调用(ex Parent.method()
)返回Parent
个实例。我想要的是能够在这些情况下返回Child
实例。我在想这样的事情会这样做:
def __getattr__(self, attr):
"""Pass properties and method calls to Parent class"""
result = getattr(self.obj, attr)
return Child(result)
但是如果失败并且: TypeError:'Child'对象不可调用。我还看到result
的类型为instancemethod
,而不是调用方法的实际结果(这将是Parent
实例)。实现这一目标的正确方法是什么?
答案 0 :(得分:-1)
看起来您可能会覆盖变量Child,因为子实例应该是可调用的。 尝试寻找像
这样的东西Child = Child(some_argument)