覆盖父类的__str__

时间:2012-12-21 15:55:38

标签: python class override

我遇到了问题,似乎无法找到解决方案。我有3个课程ABC,其中A是超类。

class A(object):
    def __str__(self):
        self._general_representation(str)

    def _general_representation(self,to_string):
        (nominal_value, std_dev) = (self._nominal_value, self.std_dev())

    def std_dev(self)
        a = error_components()*something

    def error_components(self):
        return something

class B(A):


class C(B):

我希望课程C能够覆盖“祖父母”课程的std_dev()error_components()。我怎样才能做到这一点?我不能改变A类和B类。在python 3.3中有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:3)

只需在类C上定义它们。函数在self上查找,而不是在定义调用方法的类上查找。

class C(B):
    def std_dev(self)
        return self.error_components() * something + something_else_again

    def error_components(self):
        return something_entirely_different