Python 3.x 使用多重继承在接受类参数的Mixin类上暗示工厂类方法的类型

Python 3.x 使用多重继承在接受类参数的Mixin类上暗示工厂类方法的类型,python-3.x,type-hinting,mypy,typehints,Python 3.x,Type Hinting,Mypy,Typehints,假设我有一个从其他两个类继承的类: class Mother: pass class Father: pass class Child(Mother, Father): pass 以及一个Mixin类,为子类提供工厂方法: class FactoryMixin: def make(self: (FactoryMixin and Child)) -> (FactoryMixin and Child): return self.__clas

假设我有一个从其他两个类继承的类:

class Mother:
    pass

class Father:
    pass

class Child(Mother, Father):
    pass
以及一个Mixin类,为
子类提供工厂方法:

class FactoryMixin:
    def make(self: (FactoryMixin and Child)) -> (FactoryMixin and Child):
        return self.__class__()

(FactoryMixin和Child)
中,表示这些类的并集的正确类型提示是什么?请不要建议
键入。Union
请,因为
Union[A,B]
的意思是
A
B
,而不是
A
B
()。这是一个最小的例子,实际情况要复杂得多。

可能重复@Georgy,但没有解决方案there@Patrick--尽管如此,我认为提议的副本的总体要点是正确的:在PEP 484类型生态系统中,没有构建交叉口类型的真正方法;解决方法可能涉及以某种方式使用协议。在这种特殊情况下,您可以切换到使用TypeVar,使整个问题得到解决,但这是针对这种特定场景的补丁。总的来说,我认为键入生态系统+mixin将很难混合。