在实例中绑定属性,和直接在类种绑定属性是不一样的,实例中绑定的只能在实例中用
如果Student类本身需要绑定一个属性,所有实例都可以访问,那么可以这么定义
class Student(object):
name = 'Student'
点击查看代码
class Student(object):
score = 100#定义类属性
def __init__(self, name):
self.name = name
shili = Student('tang')
print(shili.name)
shili.score = 199#实例属性比类属性优先级高
print(shili.score)
del shili.score#删除实例的score属性,类的name属性就出来了
print(shili.score)
运行结果
tang
199
100
所以,实例属性和类属性不要用相同的名字,否则会被实例属性替代掉。
练习
给Student类增加一个类属性,每创建一个实例,该属性自动增加
点击查看代码
class Student(object):
count = 0
def __init__(self, name):
self.name = name
Student.count += 1
在实例化对象的时候,应该是会自动调用一次这个方法的,区分类属性和实例属性,这里如果改成self.count,那就错了
放在__init__里面才会在实例化对象的时候执行+1的操作。Student.count代表count是类属性,只要这个类被实例化一次就会+1,所以不会被重置。如果是self.count就代表count是对象属性,那么由于每次实例化的对象都是不同的对象,所以每次都会被重置为0。