2017-05-27 67 views
-1

我想在Python中使用類來模擬C++中的「結構」。此外,我需要它在全局形式,因爲我在很多函數中使用它,我不想傳遞參數。如何在Python中創建全局類變量

我該怎麼做(創建一個類的全局對象)。

我的嘗試是:

class MyClass(): 
//Class Constuctor 

global ob1 = Myclass() 

def func1(): 
    ob1.name = "Hello World" 

def func2(): 
    print(ob1.name) 

func1() 
func2() 

這給了我一個「無效語法」錯誤,我怎麼去錯了,或者是有一個更有效的方法來做到這一點? 請注意,我喜歡10個值,所以課程無論如何都會很痛苦。

+0

您的代碼是無效的,所以我們不能重現語法錯誤。請發佈[mcve]。另外,我建議反對全局。它使得很難推斷你的代碼,依賴不明確,關注的分離很容易違反。它會導致結構不良,除非你非常嚴謹,並且知道你在做什麼(我不認爲我會這麼做)。由於測試之間的狀態可能會發生變化,因此測試也更加困難。 –

回答

1

在你的代碼中沒有必要顯式放置全局修飾符,這個變量默認是全局的。

class MyClass(): 
    def __init__(self): 
     self.name = "" 

ob1 = MyClass() 

def func1(): 
    ob1.name = "Hello World" 

def func2(): 
    print(ob1.name) 

func1() 
func2() 

輸出:

Hello World 

除了利用全球如下:

global variable 

variable = your_value 
+0

'ob1'是你的代碼中的一個全局。 globals()中的''ob1'是'True' –

+1

你說得對,我的意思是沒有必要在代碼中使用全局修飾符。 – eyllanesc

+0

好的,我現在看到了區別。 –