gpt4 book ai didi

Python多重继承问题

转载 作者:太空狗 更新时间:2023-10-30 00:35:55 27 4
gpt4 key购买 nike

抱歉,如果这个问题以前有人问过,我在搜索其他问题时找不到答案。

我是 Python 新手,我遇到了多重继承方面的问题。假设我有 2 个类 B 和 C,它们继承自同一个类 A,它们的定义如下:

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的实现。我该怎么做?

最佳答案

抵制说“首先要避免这种情况”的诱惑,一个(不一定是优雅的)解决方案可能是显式包装方法:

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 )

或者,您可以显式地定义方法,无需换行:

class D( B, C ):
foo = B.foo
bar = C.bar

关于Python多重继承问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26834201/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com