次のコードを書きました。
class Game(object):
class States(object):
STARTED = 1 << 0
LOADING = 1 << 1
ACTIVE = 1 << 2
ENDED = 1 << 3
state = States.LOADING
状態オブジェクトを定義するより良い方法はありますか?
私はこのパターンを見てきました:
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:
これははるかに読みやすいです。