Кто-нибудь знает, как я могу использовать Enum в качестве параметра конструктора класса?
Я создал такой класс:
class Coin(Cash, Enum):
onePenny = 1
twoPens = 2
fivePens = 5
ones = 0
twos = 0
fives = 0
def __init__(self, val):
if val == onePenny:
Cash.value = onePenny.value
Coin.ones += 1
elif val == twoPens:
Cash.value = twoPens.value
Coin.twos += 1
else:
print('Not existing coin.')
Когда я пытаюсь создать объект, я получаю NameError:
NameError: name 'onePenny' is not defined
Как это исправить?






Оператор class не определяет новую область видимости, поэтому вам нужно ссылаться на нее так же, как и за пределами оператора, как вы это делали с ones и twos.
def __init__(self, val):
if (val == Coin.onePenny):
Cash.value = Coin.onePenny.value
Coin.ones += 1
elif (val == Coin.twoPens):
Cash.value = Coin.twoPens.value
Coin.twos += 1
else:
print('Not existing coin.')
Можете ли вы дать нам более широкий контекст того, что вы пытаетесь сделать? Похоже, вы ошиблись.