在Python中定义类的属性

时间:2014-06-17 12:00:27

标签: 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 个答案:

答案 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包含类变量mnExample对象的每个实例都有实例成员self.mself.n

答案 1 :(得分:2)

这样:

class Example:

  def __init__(self,n,m):
    self.n=n
    self.m=m

init进行双重评分,如下所示:__init__,而不是_init_

m=0n=0是类属性,没有self.nself.m的任何内容,它们都是实例变量。

相关问题