Python 从函数作用域访问类实例

Python 从函数作用域访问类实例,python,Python,为什么不能设置_a访问MyClass实例的属性,而设置_b可以 NameError: global name 'my_instance' is not defined 代码: 将实例作为参数传递: def set_a(my_a): my_a.a = 5 my_a.b = 6 def main(): def set_b(my_a): my_a.a = 3 my_a.b = 4 my_instanc

为什么不能设置_a访问MyClass实例的属性,而设置_b可以

NameError: global name 'my_instance' is not defined
代码:


将实例作为参数传递:

def set_a(my_a):
        my_a.a = 5
        my_a.b = 6

def main():
    def set_b(my_a):
            my_a.a = 3
            my_a.b = 4

    my_instance = MyClass()
    print my_instance.a, my_instance.b
    set_b(my_instance)
    print my_instance.a, my_instance.b
    set_a(my_instance)
    print my_instance.a, my_instance.b

if __name__ == "__main__":
        main()

函数
set_a
没有看到
my_实例
,因为它在不同的范围内定义。如果将其定义在干管外,则其应起作用:

my_instance = None
...
def set_a(): ...
...
def main(): ...
尽管我建议将
my_实例
作为参数传递,而不是定义为全局变量

my_instance = None
...
def set_a(): ...
...
def main(): ...