Python multiple inheritance questions
很抱歉,如果以前问过这个问题,我在搜索其他问题时找不到答案。
我对python还不熟悉,我对多重继承也有问题。假设我有两个类B和C,它们继承自同一个类A,定义如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | class B(A): def foo(): ... return def bar(): ... return class C(A): def foo(): ... return def bar(): ... return |
现在我想定义另一个类D,它从B和C继承。D应该继承B对foo的实现,但C对bar的实现。我该怎么做?
抵制说"首先避免这种情况"的诱惑,一个(不一定是优雅的)解决方案可以是明确地包装这些方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 | class A: pass class B( A ): def foo( self ): print( 'B.foo') def bar( self ): print( 'B.bar') class C( A ): def foo( self ): print( 'C.foo') def bar( self ): print( 'C.bar') class D( B, C ): def foo( self ): return B.foo( self ) def bar( self ): return C.bar( self ) |
或者,您可以使方法定义显式,而不进行包装:
1 2 3 | class D( B, C ): foo = B.foo bar = C.bar |
号