Python传递枚举作为构造函数参数

时间:2018-05-20 15:48:05

标签: python enums constructor


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

如何解决?

1 个答案:

答案 0 :(得分:0)

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