在Python中定义类的属性
我应该怎么定义一个类的属性呢?
class Example:
def __init__(self,n,m):
self.n=n
self.m=m
或者可以这样定义:
class Example:
m=0
n=0
def __init__(self,n,m):
self.n=n
self.m=m
如果我在构造函数外面定义一个属性,那它是静态变量吗?
2 个回答
3
这样做:
class Example:
def __init__(self,n,m):
self.n=n
self.m=m
初始化的分数要加倍,写成 __init__
,而不是 _init_
!
m=0
和 n=0
是类属性,它们和 self.n
以及 self.m
没有关系,后者是实例变量。
4
我觉得你可能搞混了实例变量和类本身的变量(如果你是从Java过来的话,可以称它们为静态变量)。看看这个示例(注意,__init__
前后都有两个下划线)。
class Example:
m=0
n=0
def __init__(self,n,m):
self.n=n
self.m=m
e = Example(1,2)
print(e.m) # 2
print(e.n) # 1
print(Example.m) # 0
print(Example.n) # 0
在你的第二段代码中,Example
类有两个类变量m
和n
,而每个Example
对象的实例会有自己的实例成员self.m
和self.n
。