如何在Python中调用超类中的子类方法

时间:2012-02-03 08:56:59

标签: python

我想知道如何在超类中调用子类方法。

5 个答案:

答案 0 :(得分:11)

我相信这是经常使用的模式。

class A(object):
    def x(self):
        self.y()

    def y(self):
        print('default behavior')


class B(A):
    def y(self):
        print('Child B behavior')

class C(A):
    def z(self):
        pass

>>>B().x()
Child B behavior
>>>C().x()
default behavior

它有点像抽象类,但提供默认行为。但是,不能记住我头顶上的图案名称。

答案 1 :(得分:9)

子类背后的一点是它扩展并且改变了超类的行为。超类不能知道子类将如何扩展它。

编辑但超类很可能知道, 子类会扩展它。不确定,如果这是好的设计,那么。

答案 2 :(得分:3)

这是一个非常广泛的问题。由于您没有提供示例代码,我只会展示最简单的示例:

class A(object):
   def meth1(self, a):
       self.meth2(a, a*a)

class B(A):
   def meth2(self, a, b):
       return b / a

b = B()
b.meth1(10)

答案 3 :(得分:0)

以下是我刚试过的内容:

class A(object):
    def x(self): 
        print self.y()

class B(A):
    def y(self): 
        return 1

>>> B().x()
1

因此,除非您遇到一些特定问题,否则只需从基类中的子类调用一个方法,它就可以正常工作。

答案 4 :(得分:0)

我认为这与使用抽象方法有关。父类定义子类应实现的方法,父类知道将实现这些方法。例如,在Java中存在类似的结构。

这里很好地讨论了在Python中使用这些:Abstract methods in Python