supce's blog

python 中类属性和实例属性

忙开学,博客荒废了一段,现在捡起来。闲话不多说,步入正题


最近正在学习Python,发现Python中类属性和实例属性容易混淆。于是写了下面这段demo

class Stu(object):
    pass

def set_age(self,age):
    self.age = age

s1 = Stu()
s2 = Stu()

from types import MethodType
Stu.set_age = MethodType(set_age,Stu)

s1.set_age(1) \\通过set_age方法,设置的类属性age的值
s2.set_age(2) \\也是设置类属性age的值,并把上个值覆盖掉
print(s1.age,s2.age) \\由于s1和s2自身没有age属性,所以打印的是类属性age的值

s1.age = 10  \\给实例s1添加一个属性age并赋值为10
s2.age = 20  \\给实例s2添加一个属性age并赋值为20
print(s1.age,s2.age) \\打印的是a和s自身的age属性值,不是类age属性值

有了这段代码,就很好分清、理解类属性和实例属性了(^__^)