【问题标题】:Python pass enum as the constructor parameter [duplicate]Python将枚举作为构造函数参数传递[重复]
【发布时间】:2018-10-30 09:18:54
【问题描述】:


有人知道,我如何使用 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' 未定义

如何解决?

【问题讨论】:

  • 您能否为我们提供您正在尝试做的更广泛的背景?看来你走错了路。

标签: python enums constructor


【解决方案1】:

class 语句没有定义新的范围,因此您需要像在语句之外那样引用它,就像对 onestwos 所做的那样。

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.')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-14
    • 2015-03-14
    • 2012-10-29
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多