# 这是学习廖雪峰老师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('
测试通过!')