请考虑以下代码。 python在用逗号分隔时如何解释类RottenFruit?这合法吗?如果是,那么用例是什么?Python上的ValueError枚举(逗号分隔)
from enum import Enum
class Fruit(Enum):
Apple = 4
Orange = 5
Pear = 6
a = Fruit(5)
class RottenFruit(Enum):
Apple = 4,
Orange = 5,
Pear = 6
print(Fruit(5))
print(RottenFruit(5))
输出:
Fruit.Orange
Traceback (most recent call last):
File "...\tests\sandbox.py", line 15, in <module>
print(RottenFruit(5))
File "...\AppData\Local\Programs\Python\Python36\lib\enum.py", line 291, in __call__
return cls.__new__(cls, value)
File "...\AppData\Local\Programs\Python\Python36\lib\enum.py", line 533, in __new__
return cls._missing_(value)
File "...\AppData\Local\Programs\Python\Python36\lib\enum.py", line 546, in _missing_
raise ValueError("%r is not a valid %s" % (value, cls.__name__))
ValueError: 5 is not a valid RottenFruit
我不同意“搁置作为题外话”评估。 OP询问他们为什么不会因为使用逗号而得到简单的语法错误。这很有趣,我一开始也不明白。编辑:现在它已被标记为重复,但没有链接到所谓的原始问题。 –