过滤对父方法的调用

时间:2013-07-18 22:30:37

标签: python class oop inheritance

我使用合成而不是继承来扩展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实例)。实现这一目标的正确方法是什么?

1 个答案:

答案 0 :(得分:-1)

看起来您可能会覆盖变量Child,因为子实例应该是可调用的。 尝试寻找像

这样的东西
Child = Child(some_argument)