2021-09-08 python 类属性和对象属性的区别

之前对 python 的类属性和对象属性理解的不是准确,以致写出的代码有小 bug。

1
2
3
4
class a:
names = []
def __init__(self):
self.b = []

上面的类 a 中的 names 为类属性, 当对类 a 进行实例化后的对象, 就继承了类属性。如果在后期对 name 属性进行了修改, 在后面再进行实例化的话, 新的 object 也会继承该修改。 如下代码

1
2
3
4
5
6
7
8
x = a()
a.names.append(1)

b = a() # 这时 b.names 就会是 [1],

b.names.append(2)

c = a() # 这时 c.names 就会是 [1,2]

而实例(object)属性,是只单独属于实例。

xy = a()
xy.b.append[1]

xz = a() # 这时 xz.b 依然为 [], 空的数组。
``

2021-09-08 python 类属性和对象属性的区别
https://www.supermew.top/2021/09/08/python-类属性和对象属性的区别/
作者
八月
发布于
2021年9月8日
许可协议