在类中,变量来自一秒中使用的一种方法?

时间:2015-10-12 02:59:37

标签: python class python-3.x methods

这是我遇到的问题的简化示例。我想在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()

可以理解,最后一个命令会引发问题。

1 个答案:

答案 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的是自我在上面示例中如何定义所有内容。

要真正了解正在发生的事情,需要更长的解释,我认为以下链接确实对描述公正,我强烈建议阅读它:

What is the purpose of self?

这是另一篇SO帖子,也将解释这一点:

{{3}}