在类方法中声明新变量

时间:2017-03-02 14:48:40

标签: python class class-method

我刚刚阅读了Python中的类和方法变量,我想知道这两个例子之间是否存在差异:

class Example(object):
    def __init__(self, nr1, nr2):
        self.a = nr1
        self.b = nr2

    def Add(self):
        c = self.a + self.b
        return c

class Example2(object):
    def __init__(self, nr1, nr2):
        self.a = nr1
        self.b = nr2

    def Add(self):
        self.c = self.a + self.b
        return self.c

基本上如果我这样做:

print Example(3,4).Add()
print Example2(3,4).Add()

我得到了相同的结果:

7
7

所以我的问题是:

  1. self.c = self.a + self.bc = self.a + self.b之间的区别是什么?
  2. 是否应使用self语句声明在类中声明的所有新变量?
  3. 感谢您的帮助!

4 个答案:

答案 0 :(得分:2)

不同之处在于,在第二个示例中,您将添加结果存储到对象变量c中。在第一个示例中,c位于方法内部,因此不能是类变量,因为它在调用Add方法时实例化,而不是在定义类时实例化。

如果要存储它们,方法中的变量应该用self编写。一个本地的,不重要的变量可以写在一个方法中,就像你在c。

上做的那样

答案 1 :(得分:0)

class Example(object):
    def __init__(self, nr1, nr2):
        self.a = nr1
        self.b = nr2

    def Add(self):
        c = self.a + self.b
        return c

假设我们创建了一个实例x = Example()。

如果我们尝试使用x.c来使用c。我们会收到以下错误

AttributeError:'示例'对象没有属性' c'。

答案 2 :(得分:0)

实际上,

self.c 是一个实例变量(在方法中用定义),而 c 是一个局部变量,在类(垃圾收集器)中作用域有限。区别在于, self.c 可以被其他方法或类对象查看,方法是先调用 self.add()方法即可初始化 self。 c 实例变量,另一方面, c 绝对不能通过任何其他方法访问。

答案 3 :(得分:-1)

1.-您可以在其他方法中使用 self.c c no,是本地变量。

2.-是的, self.c

3.-不,如果你只需要在当前的方法中使用本地。

4.-在 __ init __ 内或在课程开始时,它没问题。