typing
下的任何课程是否像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
类型1}}但Mixin[A, B]
如果typing
模块没有提供任何选项,是否还有比创建自己的class AB(A, B)
更优雅的内容?
答案 0 :(得分:1)
我知道这是一篇过时的文章,但这可以帮助某人:
a = "Santol bag 85.88 www.example.com/products/16785
Shaddock kg 2.94 www.example.com/products/4109
Palm Fig 5kg 94.34 www.example.com/products/23072
Litchee lb 95.85 www.example.com/products/2557"
a = a.split("\n")
linebreak = Proc.new { |text| text.split("\n") }
linebreak![a]
答案 1 :(得分:1)
现在看来不可能。
您可以在python/typing#123存储库中找到有关“交集”类型的讨论。
PEP-544上有一个名为 Protocol 的类似功能,您可以通过合并mixin协议来合并mixin。 PEP-544的实现称为typing_extensions。也许您可以尝试使用此库。