我想要实现的目标如下:
def foo(self):
i = 4
self.bar(__something_which_holds_foo_variables__)
print(i) # prints 8
print(j) # prints 2
def bar(self, vars):
vars.j = 2
vars.i = vars.i * vars.j
从另一种方法访问方法中的所有局部变量。
使用嵌套方法和nonlocal
变量不是一种选择,因为foo
和bar
可能位于不同的模块中。
按名称传递变量也不是一种选择,因为bar()
可能会产生其他变量,我希望稍后将其用作foo()
中的本地变量。此外,可能bar()
可能会使用foo()
中的大量变量。
是否有可能实现这一点以及为什么这样的想法可能好或坏?
答案 0 :(得分:0)
只需使用(针对不同的模块):
def bar():
global modulename.i
或者如果它在课堂上那么:
def bar():
global modulename.classname.i
这个想法可能更简单,因为你可以让bar(...)
成为一个返回定义,让它以某种形式的元组返回新的i和j。