重新初始化类的父级

时间:2015-06-25 07:31:26

标签: python class python-2.7 inheritance composition

我已经陷入了我正在编写的类的问题,我需要能够在创建类的实例后重新初始化该类的父类。问题是父类具有读取和写入模式,该模式通过将字符串传递给 init 函数来确定。我希望能够在不破坏对象和重新初始化的情况下在这些模式之间切换。这是我的问题的一个例子:

from parent import Parent

class Child(Parent):
    def __init__(mode="w"):
        super.__init__(mode=mode)

    def switch_mode():
        # need to change the mode called in the super function here somehow

我们的想法是扩展我从模块导入的类以提供扩展功能。问题是我仍然需要能够从新的扩展对象访问原始类方法。到目前为止,这一切都很顺利,只需根据需要添加和覆盖方法。据我所知,替代方法是使用组合而不是继承,以便我想要扩展的对象被创建为新类的成员。这个问题是这需要我制作访问每个对象方法的方法 即。很多这样的事情:

def read_frames(self):
    return self.memberObject.read_frames()
def seek(self):
    return self.memberObject.seek()

这看起来并不是那么精彩,并且带来的问题是,如果将来有任何新方法添加到基类我必须手动创建新方法才能访问它们,但也许是唯一的选项?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

这应该有效。 super是一个函数。

super(Child, self).__init__(mode=mode)