Я хочу построить класс-оболочку вокруг объекта multiprocessing.Pipe
в Python. Наследование от модуля multiprocessing
, как известно, имеет свои проблемы (см. здесь для аналогичного вопроса, обсуждающего наследование для multiprocessing.Queue
), и я столкнулся с ошибкой, которую не могу разрешить.
Давайте рассмотрим простой пример:
from multiprocessing import Pipe
class MyClass1: pass
class MyClass2(Pipe, MyClass1):
pass
Здесь мы создаем класс MyClass2
, который наследуется как от класса Pipe, так и от пользовательского класса MyClass1
. Запуск вышеупомянутого повысит
TypeError: metaclass conflict: the metaclass of a derived class
must be a (non-strict) subclass of the metaclasses of all its bases
Я знаю, что для решения этой ошибки мне, вероятно, придется ввести метакласс, от которого MyClass2
может наследоваться, но когда я пытаюсь определить метакласс объекта Pipe
, используя type(Pipe)
, я получаю <class 'type'>
, который не помогает вообще.
В вопросах переполнения стека, с которыми я связывался выше, упоминается, что по существу существует особый способ наследования Queue
. Есть ли также специальный способ для Pipe
? Любые предложения о том, как избежать этой ошибки?