本文以廖雪峰的官方网站为参考来学习python的。其学习链接为廖雪峰小白学python教程。
本文是学习到python的实例属性和类属性。参考链接廖雪峰python实例属性和类属性。
class Student(object):
def __init__(self,name):
self.name = name
s = Student('Bob')
s.score = 90
print(s.name,s.score)
运行结果:
Bob 90
class Student(object):
name = 'Student'
s = Student()
print(s.name)
print(Student.name)
s.name = 'Michael'
print(s.name)
print(Student.name)
运行结果:
Student
Student
Michael
Student
笔记:
在编写程序的时候,千万不要对实例属性和类属性使用相同的名字,因为相同名称的实例属性将屏蔽掉类属性,但是当你删除实例属性后,再使用相同的名称,访问到的将是类属性。
练习:
# -*- coding: utf-8 -*-
class Student(object):
count = 0
def __init__(self,name):
self.name = name
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('测试通过!')
笔记:
小结
实例属性属于各个实例所有,互不干扰;
类属性属于类所有,所有实例共享一个属性;
不要对实例属性和类属性使用相同的名字,否则将产生难以发现的错误。