在 class 方法中声明新变量
Declaring new variables inside class methods
我刚刚在 Python 中阅读了有关 class 和方法变量的内容,我想知道这两个示例之间是否存在差异:
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
所以我的问题是:
self.c = self.a + self.b
和c = self.a + self.b
有什么区别?
- 所有在 class 内声明的新变量都应该用
self
语句声明吗?
感谢您的帮助!
1.- 你可以在其他方法中使用self.c c 不是,是局部变量。
2.- 是的,有 self.c.
3.- 不,如果你只在当前方法中需要它,你使用本地。
4.-在__init__里面或者class的开头就可以了。
不同之处在于,在第二个示例中,您将加法的结果存储到对象变量 c 中。在第一个示例中,c 在方法内部,因此不能是 class 变量,因为它是在调用 Add 方法时实例化的,而不是在定义 class 时实例化的。
方法中的变量,如果要存储,就应该写self。一个局部的、不重要的变量可以写在一个方法中,就像你在 c 的例子中所做的那样。
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: 'Example' 对象没有属性 'c'。
实际上self.c是一个实例变量(在方法中定义)而c是一个局部变量class(垃圾收集器)内的有限范围。不同之处在于 self.c 可以通过其他方法或 class 对象通过调用 self.add() 方法首先可以初始化 self.c 实例变量,另一方面 c 永远不能被任何其他方法访问总之。
我刚刚在 Python 中阅读了有关 class 和方法变量的内容,我想知道这两个示例之间是否存在差异:
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
所以我的问题是:
self.c = self.a + self.b
和c = self.a + self.b
有什么区别?- 所有在 class 内声明的新变量都应该用
self
语句声明吗?
感谢您的帮助!
1.- 你可以在其他方法中使用self.c c 不是,是局部变量。
2.- 是的,有 self.c.
3.- 不,如果你只在当前方法中需要它,你使用本地。
4.-在__init__里面或者class的开头就可以了。
不同之处在于,在第二个示例中,您将加法的结果存储到对象变量 c 中。在第一个示例中,c 在方法内部,因此不能是 class 变量,因为它是在调用 Add 方法时实例化的,而不是在定义 class 时实例化的。
方法中的变量,如果要存储,就应该写self。一个局部的、不重要的变量可以写在一个方法中,就像你在 c 的例子中所做的那样。
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: 'Example' 对象没有属性 'c'。
实际上self.c是一个实例变量(在方法中定义)而c是一个局部变量class(垃圾收集器)内的有限范围。不同之处在于 self.c 可以通过其他方法或 class 对象通过调用 self.add() 方法首先可以初始化 self.c 实例变量,另一方面 c 永远不能被任何其他方法访问总之。