我想在SAME类的另一个方法中调用一个方法的变量,并且由于某种原因它不打印任何东西。如何在同一类的另一个方法中调用方法的变量
class Colors():
def blue(self):
var = "This is blue"
def red(self):
b = self.blue
print b.var
我也试过print self.blue.var
我想在SAME类的另一个方法中调用一个方法的变量,并且由于某种原因它不打印任何东西。如何在同一类的另一个方法中调用方法的变量
class Colors():
def blue(self):
var = "This is blue"
def red(self):
b = self.blue
print b.var
我也试过print self.blue.var
局部变量,那么,当地的功能范围。当函数没有被执行时,它们甚至不存在,所以没有任何可访问的东西。
如果您希望变量有一个更大的范围,那么,只要给它一个更大的范围:
def blue(self):
self.var = "This is blue"
def red(self):
print self.var
只有一个方法,在同一时间运行(在简单的情况下,这是默认和在大多数语言中最常见),并且因为局部变量只在函数运行时才存在,即在函数被调用时创建并在返回时被销毁,在执行red
期间不存在这样的局部变量。
现在,当您添加并发性,它可能是red
,并在同一时间运行blue
(但通常,你永远不知道你也不应该关心)。但var
仍然是本地变量blue
,所以即使有一些赫克得到它的价值,这样做将是完全疯狂的,并且是对良好做法的犯罪。通过全局变量在线程之间共享状态足以产生一个陷阱,不需要在混合中抛出当地人。
你在做什么真的试图做什么?你可以提出一个实例变量(self.var = ...
)或者return
来自blue
。
函数/方法中的局部变量不能在该函数/方法外访问。要在方法之间共享状态,请使用实例变量。
class Colors():
def blue(self):
self.var = "This is blue"
def red(self):
print self.var
你有几个意想不到的事情会在这里:
1)要指定b键self.blue,这是一个函数指针为蓝色。
2)你有一个范围的问题,你想下面
def blue(self):
self.var = "This is blue"
def red(self):
print self.var
或者,如果你要打印的东西,蓝色返回你做:
def blue(self):
return "This is blue"
def red(self):
print blue()
谢谢你们。我解决了这个问题。在第二个方法中创建了另一个具有相同值的局部变量。
请考虑接受最有帮助的答案(点击答案中的绿色复选标记)。这向所有人表明这是您选择的解决方案。 – 2011-03-14 22:28:57
我在考虑使用现有的变量,节省了编码时间。我可以解决这个问题,但只是想在可能的情况下尝试在我发布的初始代码中做什么。 – user652124 2011-03-14 17:49:31