我想在SAME類的另一個方法中調用一個方法的變量,並且由於某種原因它不打印任何東西。如何在同一類的另一個方法中調用方法的變量
class Colors():
def blue(self):
var = "This is blue"
def red(self):
b = self.blue
print b.var
我也試過print self.blue.var
我想在SAME類的另一個方法中調用一個方法的變量,並且由於某種原因它不打印任何東西。如何在同一類的另一個方法中調用方法的變量
class Colors():
def blue(self):
var = "This is blue"
def red(self):
b = self.blue
print b.var
我也試過print self.blue.var
局部變量,那麼,當地的功能範圍。當函數沒有被執行時,它們甚至不存在,所以沒有任何可訪問的東西。
如果您希望變量有一個更大的範圍,那麼,只要給它一個更大的範圍:
def blue(self):
self.var = "This is blue"
def red(self):
print self.var
只有一個方法,在同一時間運行(在簡單的情況下,這是默認和在大多數語言中最常見),並且因爲局部變量只在函數運行時才存在,即在函數被調用時創建並在返回時被銷燬,在執行red
期間不存在這樣的局部變量。
現在,當您添加併發性,它可能是red
,並在同一時間運行blue
(但通常,你永遠不知道你也不應該關心)。但var
仍然是本地變量blue
,所以即使有一些赫克得到它的價值,這樣做將是完全瘋狂的,並且是對良好做法的犯罪。通過全局變量在線程之間共享狀態足以產生一個陷阱,不需要在混合中拋出當地人。
你在做什麼真的試圖做什麼?你可以提出一個實例變量(self.var = ...
)或者return
來自blue
。
函數/方法中的局部變量不能在該函數/方法外訪問。要在方法之間共享狀態,請使用實例變量。
class Colors():
def blue(self):
self.var = "This is blue"
def red(self):
print self.var
你有幾個意想不到的事情會在這裏:
1)要指定b鍵self.blue,這是一個函數指針爲藍色。
2)你有一個範圍的問題,你想下面
def blue(self):
self.var = "This is blue"
def red(self):
print self.var
或者,如果你要打印的東西,藍色返回你做:
def blue(self):
return "This is blue"
def red(self):
print blue()
謝謝你們。我解決了這個問題。在第二個方法中創建了另一個具有相同值的局部變量。
請考慮接受最有幫助的答案(點擊答案中的綠色複選標記)。這向所有人表明這是您選擇的解決方案。 – 2011-03-14 22:28:57
我在考慮使用現有的變量,節省了編碼時間。我可以解決這個問題,但只是想在可能的情況下嘗試在我發佈的初始代碼中做什麼。 – user652124 2011-03-14 17:49:31