如何使用收藏.abc具有多重继承的类?

2024-05-23 21:50:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个问题,我想使用来自collections.abc.MutableSequence的mixin方法,但我还必须从其他东西继承。在

class Thing(urwid.Pile, collections.abc.MutableSequence):
    ...

我最后

^{pr2}$

我如何确定发生了什么,并修复它?metaclass = ABCMeta做不到这一点,不管它值多少钱。在


Tags: 方法mixincollectionsclassmetaclassabcthingurwid
1条回答
网友
1楼 · 发布于 2024-05-23 21:50:40

metaclass=ABCMeta是问题所在。MutableSequence正在使用ABCMeta作为其元类,Pile使用了其他东西,因此产生了冲突。在

您可以从Pile继承并使用MutableSequence.register(),如下所示:

class Thing(urwid.Pile):
    ...

collections.abc.MutableSequence.register(Thing)

如果您的Thing没有实现所有必需的方法,那么您不会得到异常,但是issubclass(Thing, MutableSequence)和{}将返回True。在

相关问题 更多 >