一尘不染

Python-为什么在类中使用“自我”?

python

这两个类别有何不同?

class A():
    x=3

class B():
    def __init__(self):
        self.x=3

有什么明显的区别吗?


阅读 127

收藏
2020-12-20

共1个答案

一尘不染

A.x是一个 类变量Bself.x是一个 实例变量

Ax被实例之间共享。

用可以像列表这样修改的东西更容易证明区别:

#!/usr/bin/env python

class A:
    x = []
    def add(self):
        self.x.append(1)

class B:
    def __init__(self):
        self.x = []
    def add(self):
        self.x.append(1)

x = A()
y = A()
x.add()
y.add()
print("A's x:", x.x)

x = B()
y = B()
x.add()
y.add()
print("B's x:", x.x)

输出量

A's x: [1, 1]
B's x: [1]
2020-12-20