0

Pygame2 マルチメディア ライブラリを使用して Python でゲームを作成していますが、ActionScript 3 を使用してゲームを開発することに慣れています。AS3 では、静的変数にオブジェクトを格納することはできなかったと思います。オブジェクトがインスタンス化される前に初期化されました。

ただし、Python では、これが当てはまるかどうかはわかりません。オブジェクト インスタンスを Python クラス変数に格納できますか? いつインスタンス化されますか?クラスごとまたはインスタンスごとにインスタンス化されますか?

class Test:
    counter = Counter() # A class variable counts its instantiations
    def __init__(self):
        counter.count() # A method that prints the number of instances of Counter

test1 = Test() # Prints 1
test2 = Test() # Prints 1? 2?
4

2 に答える 2

3

あなたはこれを行うことができます:

class Test:
  counter = 0
  def __init__(self):
    Test.counter += 1
    print Test.counter

そして、それは期待どおりに機能します。

于 2009-08-17T22:28:30.987 に答える
3

はい。
ほとんどの python と同様に、試してみてください。

Test オブジェクトの作成時にインスタンス化されます。つまり、test1 へ
の割り当て カウンター オブジェクトはクラスごとに作成されます。

次を実行して確認します(クラス変数にアクセスするには、selfが必要です

class Counter:
  def __init__(self):
    self.c = 0

  def count(self):
    self.c += 1
    print 'in count() value is ' , self.c
    return self.c

class Test:
  counter = Counter() # A class variable counts its instantiations 
  print 'in class Test'
  def __init__(self):
    print 'in Testinit'
    self.counter.count() # A method that prints the number of instances of Counter

test1 = Test() # Prints 1
test2 = Test()
于 2009-08-17T22:43:36.950 に答える