类属性、类变量:只能由类调用的属性
如下 代码中的total就是类class的变量,在这个类下声明的对象只能调用这个变量,不能修改,只有类才有资格修改类的变量。但若类的对象尝试去对total做修改,就相当于只是给自己增添了一个新的属性total,并不能改变类的变量total的值。如果类class调用total修改其值,那么对象再次访问变量total ,访问到的将是修改后的值。但如果此对象本来就有一个total属性,那么修改类的total属性后,对象的total属性的值并没有改变,还是其原来的值。
另外,类无法访问对象实例的属性,但对象可以访问类属性(类变量)。
以上解释在以下代码中也可体会:
class People(object):
#类变量可以由所有的对象访问,但是对象只能访问,不能修改
#可以用来做资源共享
total=0
name = 'python 8期'
#初始化函数,添加对象属性
def __init__(self,name,age,school):
#给对象属性赋值
self.name=name
self.age=age
self.school=school
#只能使用类去修改
People.total+=1
#p1和p2是两个不同的对象,这两个对象各自的信息时不可以共享的
p1=People('张三',21,'**大学')
print(p1.total)
p2=People('钊冉',22,'***大学')
print(p2.total)
#类无法访问对象实例的属性
# print(People.name)
#对象可以访问类属性/类变量
# print(p1.total)
#对象没有办法修改类的属性值
# 给p1添加了一个total属性
# p1.total=100
# print(People.total)
#如果需要修改类的变量的值,只能由类调用修改
# People.total=1000
# print(People.total)
#对象访问到的是修改之后的值
# print(p1.total)