Python 3 игнорирует директиву метакласса? - PullRequest
0 голосов
/ 02 октября 2018

Отредактировано

У меня есть 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

1 Ответ

0 голосов
/ 02 октября 2018

Проблема связана с неправильным импортом.файл 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 работает для них.

...