2015-06-04 84 views
-1

因此,這裏是一些示例代碼當再次調用時,停止重新初始化類變量?

class hi(object) 
    def __init__(self): 

     self.answer = 'hi' 

    def change(self): 

     self.answer ='bye' 
     print self.answer 

    def printer(self): 

     print self.answer 

class goodbye(object): 

    def bye(self): 

     hi().change() 

goodbye().bye() 
hi().printer() 

當我運行這段代碼I輸出

'bye' 
'hi' 

我希望它輸出

'bye' 
'bye' 

有沒有辦法做到這一點,同時還初始化self.answer到嗨,或者這將導致它總是重新初始化爲'嗨',不管我以後做什麼?

+2

'goodbye.bye'正在研究一種**完全不同的** '喂''實例到你打電話'打印機'的那個!他們是*實例屬性*,而不是*類屬性*。 – jonrsharpe

+0

查看'Singleton'模式 – sirfz

+0

可能的重複[是否有一個簡單,優雅的方式來定義在Python中的單身人士?](http://stackoverflow.com/questions/31875/is-there-a-simple-elegant- python) – sirfz

回答

1

您正在使用實例屬性而不是jonrsharpe指出的類屬性。

嘗試是這樣的:

class hi(object): 
    answer = 'hi' 

    def __init__(self): 
     pass 

    @classmethod 
    def change(cls): 
     cls.answer ='bye' 
     print cls.answer 

    def printer(self): 
     print self.answer 

class goodbye(object): 

    def bye(self): 
     hi.change() 

goodbye().bye() 
hi().printer() 

這裏answer現在是一個類屬性change()類方法

相關問題