在Python中定义类的属性

-2 投票
2 回答
2696 浏览
提问于 2025-04-18 10:04

我应该怎么定义一个类的属性呢?

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=0n=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类有两个类变量mn,而每个Example对象的实例会有自己的实例成员self.mself.n

撰写回答