![](/img/trans.png)
[英]How do I call the variable in one method in another method inside the same class?
[英]How to call a variable of a method in another method of the same class
我試圖在 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 = ...
) 或從blue
return
一些東西。
函數/方法中的局部變量不能在該函數/方法之外訪問。 要在方法之間共享狀態,請使用實例變量。
class Colors:
def blue(self):
self.var = "This is blue"
def red(self):
print(self.var)
這里發生了一些意想不到的事情:
您將b
分配給self.blue
,這是一個指向藍色的函數指針。
您有范圍問題,您需要以下內容
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(self.blue())
多謝你們。 我想辦法解決它。 在第二種方法中創建了另一個具有相同值的局部變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.