Python类属性与实例属性的主要区别是:
- 类属性被整个类所有,实例属性仅属于单个实例
类属性在类和所有实例间共享,实例属性仅存在于单个实例。
## python www.itzhimei.com 代码
class Person:
name = 'Person' # 类属性
p1 = Person()
p2 = Person()
p1.name = 'Tom' # 实例属性
print(p1.name) # Tom
print(p2.name) # Person
- 类属性在内存中只存储一份,实例属性为每个实例存储一份
修改类属性会影响所有实例访问的结果。
## python www.itzhimei.com 代码
class Person:
count = 0
p1 = Person()
p2 = Person()
Person.count += 1
print(p1.count) # 1
print(p2.count) # 1
- 类属性通常用于定义所有实例共享的数据,实例属性用于每个实例的数据
类属性用于定义类的特征,实例属性用于存储个体的状态。
## python www.itzhimei.com 代码
class Person:
species = 'Human' # 类属性
def __init__(self, name):
self.name = name # 实例属性
- 类属性通过类名访问,实例属性通过实例名访问
## python www.itzhimei.com 代码
Person.species # 类属性
p1.name # 实例属性
总结起来,类属性关联类,实例属性关联对象实例。