Python ABC 多重继承

2024-05-14 09:22:50 发布

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

我想这段代码比我用文字能更好地解释这个问题。这是my abc.py中的代码:

from abc import ABCMeta, abstractmethod

class MyABC(object):
    __metaclass__ = ABCMeta

    @abstractmethod
    def print(self):
        pass

这是my_class.py中的代码

from my_abc import MyABC
from third_party_package import SomeClass

class MyClass(MyABC, SomeClass):
    def __init__(self):
        super(MyClass, self).__init__()

    def print(self):
        print('Hello ABC')

当我尝试运行我的_class.py时,我得到:

TypeError: Error when calling the metaclass bases metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases

我知道我可以创建一个直接从接口MyABC继承的类,然后创建另一个从我创建的这个类和我的第三方模块类继承的类。

我的问题是:有没有另一种更好和正确的方法可以直接做到这一点,而不必为我的目的创建一个中间类?


Tags: ofthe代码frompyimportselfmy

热门问题