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将很难混合。