How to call subclass methods in a superclass in Python
我想知道如何在超类中调用子类方法。
我相信这是一个经常使用的模式。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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 2 3 4 5 6 7 8 9 10 | 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) |
我认为这与使用抽象方法有关。父类定义子类应该实现的方法,父类知道将实现这些方法。类似的结构存在于Java中。
在python中使用这些将在这里讨论:python中的抽象方法
以下是我刚试过的:
1 2 3 4 5 6 7 8 9 10 | class A(object): def x(self): print self.y() class B(A): def y(self): return 1 >>> B().x() 1 |
号
所以,除非您有一些特定的问题,否则只需从基类的子类中调用一个方法,它就可以工作了。