2011-03-14 152 views

回答

9

局部变量,那么,当地的功能范围。当函数没有被执行时,它们甚至不存在,所以没有任何可访问的东西。

如果您希望变量有一个更大的范围,那么,只要给它一个更大的范围:

def blue(self): 
    self.var = "This is blue" 

def red(self): 
    print self.var 
2

只有一个方法,在同一时间运行(在简单的情况下,这是默认和在大多数语言中最常见),并且因为局部变量只在函数运行时才存在,即在函数被调用时创建并在返回时被销毁,在执行red期间不存在这样的局部变量。

现在,当您添加并发性,它可能是red,并在同一时间运行blue(但通常,你永远不知道你也不应该关心)。但var仍然是本地变量blue,所以即使有一些赫克得到它的价值,这样做将是完全疯狂的,并且是对良好做法的犯罪。通过全局变量在线程之间共享状态足以产生一个陷阱,不需要在混合中抛出当地人。

你在做什么真的试图做什么?你可以提出一个实例变量(self.var = ...)或者return来自blue

+0

我在考虑使用现有的变量,节省了编码时间。我可以解决这个问题,但只是想在可能的情况下尝试在我发布的初始代码中做什么。 – user652124 2011-03-14 17:49:31

1

函数/方法中的局部变量不能在该函数/方法外访问。要在方法之间共享状态,请使用实例变量。

class Colors(): 

    def blue(self): 
     self.var = "This is blue" 

    def red(self): 
     print self.var 
1

你有几个意想不到的事情会在这里:

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() 
0

谢谢你们。我解决了这个问题。在第二个方法中创建了另一个具有相同值的局部变量。

+0

请考虑接受最有帮助的答案(点击答案中的绿色复选标记)。这向所有人表明这是您选择的解决方案。 – 2011-03-14 22:28:57

相关问题