# 这是学习廖雪峰老师python教程的学习笔记
1、概览
1.1、实例绑定属性
class Student(object):
def __init__(self, name):
self.name = name
s = Student('Bob') # 创建实例 s
s.score = 90 # 为s 新增一个 score 属性
1.2、类绑定属性
class Student(object):
name = 'Student'
name 属性归类所有,但Studen 的所有 instance 都可以访问到
# 实例访问类属性
>>> s = Student() # 创建实例s
>>> print(s.name) # 打印name属性,因为实例并没有name属性,所以会继续查找class的name属性
Student
# 给实例绑定 name 属性
>>> s.name = 'Michael' # 给实例绑定name属性
>>> print(s.name) # 由于实例属性优先级比类属性高,因此,它会屏蔽掉类的name属性
Michael
1.3、总结
相同名称的实例属性将屏蔽掉类属性
2、例子
1、为了统计学生人数,可以给Student类增加一个类属性,每创建一个实例,该属性自动增加:
# -*- coding: utf-8 -*-
class Student(object):
count = 0
def __init__(self, name):
self.name = name
Student.count = Student.count + 1
# 测试:
if Student.count != 0:
print('测试失败!')
else:
bart = Student('Bart')
if Student.count != 1:
print('测试失败!')
else:
lisa = Student('Bart')
if Student.count != 2:
print('测试失败!')
else:
print('Students:', Student.count)
print('测试通过!')