在Python中创建对象期间从一组值中选择变量的值

时间:2015-02-20 18:43:48

标签: python

我想为类Player创建一个实例,如:

myPlayer = Player(name="ABc", level="A")

参数级别是一个字符串,可以包含以下值'A','B', 'C','D','E'

如何将用户输入的level值限制为这些特定值?如何在Python中实现此目的?

我目前的计划如下:

class Player:          
    def __init__(self,pname, level):
        self.pname = pname
        self.level = level

2 个答案:

答案 0 :(得分:2)

最简单的方法是set匹配。例如:

class Player(object):
    _valid_levels = {'A','B','C','D','E'}

    def __init__(self, name, level):
        if level not in Player._valid_levels:
            raise ValueError("Level should be {}, got {}".format(Player._valid_levels, level))
        self.name  = name
        self.level = level

如果用户尝试使用不正确的级别实例化ValueError,则会引发Player。请注意,这是区分大小写的!

答案 1 :(得分:1)

您可以在级别无效的情况下引发异常

if level not in "ABCDE":
    raise ValueError('Level must be one of (A, B, C, D, E)')

或者,如果您可以访问python3.4 +,则可以使用枚举

import enum

class Level(enum.Enum):
    A, B, C, D, E = range(5)

然后使用枚举对象创建播放器

Player('MyName', Level.B)