2024-05-23 21:50:40 发布
网友
我有一个问题,我想使用来自collections.abc.MutableSequence的mixin方法,但我还必须从其他东西继承。在
collections.abc.MutableSequence
class Thing(urwid.Pile, collections.abc.MutableSequence): ...
我最后
我如何确定发生了什么,并修复它?metaclass = ABCMeta做不到这一点,不管它值多少钱。在
metaclass = ABCMeta
metaclass=ABCMeta是问题所在。MutableSequence正在使用ABCMeta作为其元类,Pile使用了其他东西,因此产生了冲突。在
metaclass=ABCMeta
MutableSequence
ABCMeta
Pile
您可以从Pile继承并使用MutableSequence.register(),如下所示:
MutableSequence.register()
class Thing(urwid.Pile): ... collections.abc.MutableSequence.register(Thing)
如果您的Thing没有实现所有必需的方法,那么您不会得到异常,但是issubclass(Thing, MutableSequence)和{}将返回True。在
Thing
issubclass(Thing, MutableSequence)
metaclass=ABCMeta
是问题所在。MutableSequence
正在使用ABCMeta
作为其元类,Pile
使用了其他东西,因此产生了冲突。在您可以从
Pile
继承并使用MutableSequence.register()
,如下所示:如果您的}将返回True。在
Thing
没有实现所有必需的方法,那么您不会得到异常,但是issubclass(Thing, MutableSequence)
和{相关问题 更多 >
编程相关推荐