我写了一个简单的菜单函数,我想从我的main_program()函数调用它。该代码还包括一个名为 Writing
的类,我正在尝试在main_program()
内创建一个对象。原因是我听说最好避免全局变量。但是这不起作用,我得到答案:NameError: name 'writing_obj' is not defined
当我在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()
writing_obj
在main_program()
函数中定义,未声明为全局函数。 我建议使用函数参数:
...
def menu(writing_obj):
...
def main_program():
writing_obj = Writing()
menu(writing_obj)
您可以改为global writing
放在main_program()
定义的开头,但正如您所说,不建议使用全局变量。