我写了以下代码:
class Game(object):
class States(object):
STARTED = 1 << 0
LOADING = 1 << 1
ACTIVE = 1 << 2
ENDED = 1 << 3
state = States.LOADING
有没有更好的方法来定义状态对象?
答案 0 :(得分:7)
我见过这种模式:
class Demo:
STARTED, LOADING, ACTIVE, ENDED = range(4)
或者如果你真的需要不同的位:
class Demo:
STARTED, LOADING, ACTIVE, ENDED = (2**x for x in range(4))
那就是说,你为什么要为自己做点操作而负担?只需使用布尔属性:
class States(object):
def __init__(self):
self.started = False
self.loading = False
self.active = False
self.ended = False
允许你写:
if state.loading:
和
if state.started or state.loading:
更易读。
答案 1 :(得分:0)
是的,有。使用新的Python Enum type(也是backported)。然后你的代码将是:
class State(Enum):
STARTED = 1
LOADING = 2
ACTIVE = 3
ENDED = 4
class Game(object):
state = State.LOADING