Python 从函数作用域访问类实例
为什么不能设置_a访问MyClass实例的属性,而设置_b可以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
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(): ...