在类方法中声明新变量

Lit*_*wos 7 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
Run Code Online (Sandbox Code Playgroud)

基本上,如果我这样做:

print Example(3,4).Add()
print Example2(3,4).Add()
Run Code Online (Sandbox Code Playgroud)

我得到相同的结果:

7
7
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:

  1. self.c = self.a + self.b和之间有什么区别c = self.a + self.b
  2. 是否应该在self语句中声明所有在类内部声明的新变量?

谢谢你的帮助!

Kan*_*iva 5

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

    def Add(self):
        c = self.a + self.b
        return c
Run Code Online (Sandbox Code Playgroud)

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

如果我们尝试使用 xc 访问 c 。我们会得到以下错误

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


Tia*_*tro 3

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

如果您想存储方法内的变量,则应该使用 self 来编写它们。可以将局部的、不重要的变量写入方法内,就像在 c 示例中所做的那样。