在Python中创建对象时,在哪里创建避免全局变量

时间:2016-04-23 11:54:52

标签: python python-3.x

我编写了一个简单的菜单函数,我想从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()

1 个答案:

答案 0 :(得分:1)

writing_objmain_program()函数中定义,未声明为全局函数。我建议使用函数参数:

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

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

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