我正在使用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?
答案 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()