簡體   English   中英

如何在同一類的另一個方法中調用方法的變量

[英]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執行期間沒有這樣的本地。

現在,當您添加並發時, redblue可能同時運行(但通常,您永遠不會知道也不應該關心)。 但是var仍然是blue局部變量,所以即使有一些東西可以得到它的值,這樣做也將是完全瘋狂的,並且是對良好實踐的犯罪。 通過全局變量在線程之間共享狀態就足夠了,無需將本地變量也混入其中。

真正想做什么? 您可能想要一個實例變量 ( self.var = ... ) 或從blue return一些東西。

函數/方法中的局部變量不能在該函數/方法之外訪問。 要在方法之間共享狀態,請使用實例變量。

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(self.blue())

多謝你們。 我想辦法解決它。 在第二種方法中創建了另一個具有相同值的局部變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM