我编写了一个简单的菜单函数,我想从main_program()函数中调用它。代码还包括一个名为Writing
的类,我试图在main_program()
内创建一个对象。这样做的原因是我听说避免全局变量是最好的。但是这不起作用,我得到答案:NameError: name 'writing_obj' is not defined
当我在main_program()
之外创建对象时,一切正常,所以我想我必须以某种方式从writing_obj
返回我的对象main_function()
?
这是我写的代码:
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()
答案 0 :(得分:1)
writing_obj
在main_program()
函数中定义,未声明为全局函数。我建议使用函数参数:
...
def menu(writing_obj):
...
def main_program():
writing_obj = Writing()
menu(writing_obj)
您可以而是将global writing
放在main_program()
定义的开头,但正如您所说,不建议使用全局变量。