Python 如何在同一类的另一个方法中调用方法的变量
我试图在同一类的另一个方法中调用一个方法的变量,但由于某种原因,它不会打印任何内容Python 如何在同一类的另一个方法中调用方法的变量,python,variables,Python,Variables,我试图在同一类的另一个方法中调用一个方法的变量,但由于某种原因,它不会打印任何内容 class Colors(): def blue(self): var = "This is blue" def red(self): b = self.blue print b.var 我还尝试了打印self.blue.var局部变量是函数范围的局部变量。当函数当前未执行时,它们甚至不存在,因此没有可访问的内容 如果希望变量的作用域更大,那么
class Colors():
def blue(self):
var = "This is blue"
def red(self):
b = self.blue
print b.var
我还尝试了打印self.blue.var局部变量是函数范围的局部变量。当函数当前未执行时,它们甚至不存在,因此没有可访问的内容 如果希望变量的作用域更大,那么只需给它一个更大的作用域:
def blue(self):
self.var = "This is blue"
def red(self):
print self.var
一次只运行一个方法(在最简单的情况下,这是大多数语言中最常见的默认方法),并且由于局部变量仅在函数运行时存在,即在调用函数时创建,在函数返回时销毁,因此在执行
red
期间没有此类局部变量
现在,当您添加并发时,red
和blue
可能同时运行(但通常情况下,您永远不知道也不应该在意)。但是var
仍然是blue
的一个本地变量,因此,即使有一些检查来获取它的值,这样做也完全是疯狂的,是对良好实践的犯罪。通过globals在线程之间共享状态是一个足够的陷阱,不需要将局部变量也加入其中
你到底想干什么?您可能需要一个实例变量(
self.var=…
)或return
函数/方法中的blue局部变量不能在该函数/方法之外访问。要在方法之间共享状态,请使用实例变量
class Colors():
def blue(self):
self.var = "This is blue"
def red(self):
print self.var
这里发生了一些意想不到的事情:
1) 您正在将b分配给self.blue,它是指向blue的函数指针
2) 您有一个范围问题,您需要以下内容
def blue(self):
self.var = "This is blue"
def red(self):
print self.var
或者,如果要打印blue正在返回的内容,请执行以下操作:
def blue(self):
return "This is blue"
def red(self):
print blue()
谢谢各位。我想办法解决这个问题。在第二种方法中创建了另一个具有相同值的局部变量。我正在考虑使用一个现有变量,节省我的编码时间。我可以绕过这个问题,但我只是希望在我发布的初始代码中我想做的是什么。请考虑接受最有帮助的答案(通过答案点击绿色复选标记)。这向所有人表明这是您选择的解决方案。