Python 面向对象-类属性和实例属性
一、实例属性
Python是动态语言,根据类创建的实例可以任意绑定属性。
>>> class Student(object):
... def __init__(self, name):
... self.name = name # 每个实例必须的属性
...
>>> s = Student('Jack')
>>> s.score = 90 # 任意绑定属性
>>> s.name
'Jack'
>>> s.score
90
二、类属性
直接在class中定义属性,这种属性是类属性,归Student类所有。
>>> class Student(object):
... name = 'Jack' # 类属性
...
>>> Student.name # 获取类属性
'Jack'
>>> s = Student()
>>> s.name # 获取类属性
'Jack'
>>> s.name = 'Mike' # 添加实例属性
>>> s.name # 获取实例属性
'Mike'
>>> Student.name # 获取类属性
'Jack'
在编写程序的时候,千万不要对实例属性和类属性使用相同的名字,因为相同名称的实例属性将屏蔽掉类属性,但是当你删除实例属性后,再使用相同的名称,访问到的将是类属性。