【Python】Python类属性与实例属性有什么区别?

Python类属性与实例属性的主要区别是:

  1. 类属性被整个类所有,实例属性仅属于单个实例
    类属性在类和所有实例间共享,实例属性仅存在于单个实例。
## python www.itzhimei.com 代码
class Person:
  name = 'Person' # 类属性

p1 = Person() 
p2 = Person()

p1.name = 'Tom' # 实例属性
print(p1.name) # Tom
print(p2.name) # Person
  1. 类属性在内存中只存储一份,实例属性为每个实例存储一份
    修改类属性会影响所有实例访问的结果。
## python www.itzhimei.com 代码
class Person:
  count = 0

p1 = Person()
p2 = Person()

Person.count += 1 
print(p1.count) # 1
print(p2.count) # 1
  1. 类属性通常用于定义所有实例共享的数据,实例属性用于每个实例的数据
    类属性用于定义类的特征,实例属性用于存储个体的状态。
## python www.itzhimei.com 代码
class Person:
  species = 'Human' # 类属性

  def __init__(self, name): 
    self.name = name # 实例属性
  1. 类属性通过类名访问,实例属性通过实例名访问
## python www.itzhimei.com 代码
Person.species # 类属性
p1.name # 实例属性 

总结起来,类属性关联类,实例属性关联对象实例。