2016-04-23 83 views
0

我寫了一個簡單的菜單函數,我想從main_program()函數調用它。該代碼還包括一個名爲Writing的類,我試圖在main_program()內創建一個對象。原因是我聽說最好避免使用全局變量。然而,這並不工作,我得到了答案:NameError: name 'writing_obj' is not defined在Python中創建對象時避免使用全局變量的位置

當我創建main_program()外面的一切對象正常工作,所以我想的是,我不得不從main_function()莫名其妙地回到我的對象writing_obj

這裏是我寫的代碼:

class Writing: 
    def writing_something(self): 
     print("I'm learning Python ") 

def menu(): 
    while True: 
     val = int(input("1. Write a sentence 2. Quit ")) 
     if val == 1: 
      writing_obj.writing_something() 

     elif val == 2: 
      print("The program shuts down. See ya! ") 
      break 

     else: 
      print("Sorry, I din't get that! ") 
      continue 


def main_program(): 
    writing_obj = Writing() 
    menu() 

main_program() 

回答

1

writing_objmain_program()函數中定義,而不是宣稱是全球性的。我會建議使用功能參數:

... 
def menu(writing_obj): 
    ... 

def main_program(): 
    writing_obj = Writing() 
    menu(writing_obj) 

可以而不是把global writingmain_program()定義的開始,但正如你所說的,不推薦使用全局變量。

+0

完美工作。謝謝! –