2

次のコードを書きました。

class Game(object):
    class States(object):
        STARTED = 1 << 0
        LOADING = 1 << 1
        ACTIVE = 1 << 2
        ENDED = 1 << 3

    state = States.LOADING

状態オブジェクトを定義するより良い方法はありますか?

4

2 に答える 2

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:

これははるかに読みやすいです。

于 2013-10-31T09:03:35.637 に答える