Python 面向对象-类属性和实例属性

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'

在编写程序的时候,千万不要对实例属性和类属性使用相同的名字,因为相同名称的实例属性将屏蔽掉类属性,但是当你删除实例属性后,再使用相同的名称,访问到的将是类属性。

相关推荐