2009-08-17 104 views
0

我正在用Pygame2多媒体库编写Python游戏,但我更习惯于用ActionScript 3开发游戏。在AS3中,我不认为有可能将对象存储在静态变量中,因为静态变量在对象被实例化之前被初始化。我可以将对象存储在Python类成员中吗?

但是,在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

你确定你的意思是静态类变量?你可以设置静态变量就像ActionScript 3中的任何其他变量一样。 或者也许静态意味着其他东西我Python(与ActionScript 3相比)? – 2009-08-17 23:01:34

+0

嗯......也许我在想常量,静态变量或常量是在编译时设置的,在任何对象被实例化之前。 – 2009-08-18 02:43:13

回答

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

你可以这样做:

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

而且它按预期工作。

相关问题