我可以在Python类成员中存储对象吗?

时间:2009-08-17 22:19:47

标签: python actionscript-3 pygame instantiation

我正在使用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?

2 个答案:

答案 0 :(得分:3)

你可以这样做:

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

它按预期工作。

答案 1 :(得分:2)

是。
和大多数python一样试试看。

创建Test对象时将实例化它。即你对test1的任务 计数器对象是按类

创建的

运行以下内容以查看(要访问类变量,您需要自我

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()