这是我遇到的问题的简化示例。我想在func2中调用var1,这可能吗?
class Plot():
def __init__(self,variable):
self._variable = float(variable)
def func1(self):
var1 = self._variable + 1
print(var1)
def func2(self):
var2 = var1 + 1
print(var2)
我测试的示例命令
h = Plot(3)
h.func1()
h.func2()
可以理解,最后一个命令会引发问题。
答案 0 :(得分:6)
你需要指定一个自我'在func1
内的var1前面。
所以,这样做:
def func1(self):
self.var1 = self._variable + 1
print(var1)
在func2中这样做,你就是这样做的:
def func2(self):
var2 = self.var1 + 1
print(var2)
解释为何需要这样做。
**编辑:感谢@Pynchia的评论
让我们看一下您的代码,以进一步解释为什么需要这样做:
class Plot():
def __init__(self,variable):
self._variable = float(variable)
def func1(self):
self.var1 = self._variable + 1
print(var1)
def func2(self):
var2 = self.var1 + 1
print(var2)
简而言之,因为它是一个非常详细的主题,self的使用允许您在实例命名空间中使用变量,简而言之,它们可以在您的方法中使用,就像我提出的解决方案一样。
所以,当你最终创建一个类的实例时:
obj = Plot()
您的obj
现在位于实例(对象)空间/范围内,以及制作" stuff"的方式可用于obj
的是自我在上面示例中如何定义所有内容。
要真正了解正在发生的事情,需要更长的解释,我认为以下链接确实对描述公正,我强烈建议阅读它:
这是另一篇SO帖子,也将解释这一点:
{{3}}