python输入模块:Mixin
作者:互联网
打字时是否有任何类似mixin的课程?
例如
from typing import Union
class A:
pass
class B:
pass
class C:
pass
class D(A, B, C):
pass
# current: ab is A or B, but not both
def f(ab: Union[A, B]):
pass
# ideal: ab is A and B
def f(ab: Mixin[A, B]):
pass
f(D())
请注意D是A和B的实例,但也是C.这对f的限制太多了(因为f不需要C)因此,参数ab不一定是D型,而是Mixin [A ,B]
如果输入模块没有提供任何选项,是否还有比创建我自己的AB类(A,B)更优雅的东西?
解决方法:
现在似乎不可能.
您可以在python/typing#123存储库中找到关于“Intersection”类型的讨论.
在PEP-544上有一个类似的功能叫做Protocol,你可以通过合并mixin协议来合并mixins.
PEP-544的实现名为typing_extensions.也许您可以尝试使用此库.
标签:python,multiple-inheritance,typechecking 来源: https://codeday.me/bug/20191001/1838246.html