Python:如何解决此类继承

时间:2013-12-31 15:06:57

标签: python inheritance override

我有以下课程:

class A:
    def __init__(self,x):
        self.x = x
        self.xp = self.preprocess(x)

    def preprocess(self,x):
        return(x**2)

class B(A):
    def __init__(self,x,y):
       A.__init__(self,x)
       self.y = y

    def results():
       return(self.xp + self.y)

在此玩具示例中,A用于读取某些数据(x)并对其进行预处理(xp)。

B进一步读取一些数据(y)并使用来自A的预处理数据生成结果。

现在我需要创建一个类CC与[{1}}具有完全相同的差异,因此我很想接受 只需将其定义为:

B

但是,我需要覆盖class C(B): pass 方法,以便在构造A.preprocess()时使用正确的预处理。有这么简单直接的方法吗?

1 个答案:

答案 0 :(得分:2)

是的,只需在preprocess上定义新的C方法:

class C(B):
    def preprocess(self, x):
        return x + x

使用A.__init__()调用时,A方法会在type(self) is C中找到方法方法。