我应该如何定义类的属性?
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
如果我在构造函数之外定义一个属性,它是一个静态变量吗?
答案 0 :(得分:3)
我认为你混淆了实例变量和类本身的变量(如果你来自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
。
答案 1 :(得分:2)
这样:
class Example:
def __init__(self,n,m):
self.n=n
self.m=m
对init
进行双重评分,如下所示:__init__
,而不是_init_
!
m=0
和n=0
是类属性,没有self.n
和self.m
的任何内容,它们都是实例变量。