2013-08-22 89 views
0

我希望此方法更新某個值,除非傳遞另一個值,而應更新它。下面是我想要做的一個例子:「自己沒有定義」如何在方法中設置默認參數?

def update_t(self,t=self.t): 
    "If nothing is passed, then the default parameter is the attribute self.t" 
    t=t+1 

我得到

這是一個相關的問題:default value of parameter as result of instance method

...但是因爲這個值被更新,我不能讓它成爲無。我也不能成爲一個對象,因爲這會給我一個錯誤(不能添加對象和int)。有任何想法嗎?謝謝。

+0

函數調用不這樣工作;你不能傳入一個變量或屬性,並且賦值給該函數的參數會影響該變量或屬性或列表項或者該函數被調用的內容。 – user2357112

回答

2

使用可以解決的問題。如None

def update_t(self, t=None): 
    "If nothing is passed, then the default parameter is the attribute self.t" 
    if t is None: 
    self.t += 1 
    else: 
    t += 1 

注意,這可能不會改變,因爲當地的名字傳遞給它的值,如果對象沒有一個__iadd__()方法可以反彈。

相關問題