我想为类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
答案 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)