【发布时间】:2017-02-09 09:16:54
【问题描述】:
考虑以下代码。 当逗号分隔时,python如何解释类RottenFruit?这合法吗?如果是,用例是什么?
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 在问为什么他们不只是因为使用逗号而得到一个简单的语法错误。这很有趣,我一开始也没有明白。编辑:现在它已被标记为重复,但没有链接到假定的原始问题。
标签: python