Python 3 忽略元类指令?

维塔利

已编辑

我有 2 个类继承自ABC,第三个类继承自这两个类,每个类都在不同的文件中。试图提供ABCMeta最后一个类的元类,以解决元类的冲突,但同样失败

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

为什么在这种情况下python会忽略元类指令,以及如何解决它?

文件A:

from abc import ABC, abstractmethod

class A(ABC):
    @abstractmethod
    def method1(self):
       pass

文件 B:

from abc import ABC, abstractmethod

class B(ABC):      
    @abstractmethod
    def method2(self):
       pass

文件 C:

import A
import B
class C(A,B,metaclass=ABCMeta):
    def method1(self):
       pass
    def method2(self):
       pass
维塔利

问题源于错误的导入。文件 C 应该是:

from A import A
from B import B
class C(A,B):
   def method1(self):
      pass
   def method2(self):
      pass

应该归功于@Matthias 和@Giacomo Alzetta,他们指出 MCVE 为他们工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章