次のコードを考慮してください。 カンマ区切りの場合、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は、カンマを使用する理由を単純な構文エラーにしない理由を尋ねています。これは興味深いことですが、私は最初にそれを取得しませんでした。編集:今は重複としてマークされていますが、元の元の質問へのリンクはありません。 –