lst = [1, 2, 3]
match lst:
case list((1, 2, 3)):
print(2)将2作为输出,但是,
from fractions import Fraction
frctn = Fraction(1, 2)
match frctn:
case Fraction(1, 2):
print(1)给予,
TypeError: Fraction() accepts 0 positional sub-patterns (2 given)对于允许某些类型的位置子模式而不允许某些类型的位置子模式,有什么具体的理由吗?
发布于 2022-06-07 15:02:02
类中的位置子模式是使用__match_args__魔术属性声明的。详情请参见这里。Fraction似乎没有声明这个属性,所以您必须使用命名子模式来代替:
Fraction(numerator=1, denominator=2)https://stackoverflow.com/questions/72533343
复制相似问题