2009-08-17 71 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 

而且它按預期工作。

相關問題