在 Python 中创建对象时,在何处创建避免全局变量



我写了一个简单的菜单函数,我想从我的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_objmain_program()函数中定义,未声明为全局函数。 我建议使用函数参数:

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

您可以改为global writing放在main_program()定义的开头,但正如您所说,不建议使用全局变量。

最新更新