本文介绍python中的类属性和实例属性的相关知识。
首先是什么是类和实例:
类是对一类具有相同属性的对象的抽象。
实例是根据类创建出来的一个个具体的“对象”。一个类可以实例化出多个实例。
__author__ = "Allen Liu"
__time__ = "2017/8/2"
'''This is an example ... '''
class dog(object):
leg_num = 4
d1 = dog
d2 = dog
print(d1.leg_num)#输出4
print(d2.leg_num)#输出4
上面我们定义了一个类(dog),d1,d2为这个类的两个实例。
下面介绍类属性和实例属性:
类属性在类内定义(一般在类的开始),在__init__函数外面。一般是类所共有的属性定义为类属性。
在类内部用类名.类属性名调用,外部既可以用类名.类属性名又可以用实例名.类属性名来调用。
实例属性一般在类中的函数中定义,实例属性可能为某个实例独有。内部调用时为self.实例属性名,外部调用时用实例名.实例属性名。
举例说明:
__author__ = "Allen Liu"
__time__ = "2017/8/2"
'''This is an example ... '''
class dog(object):
leg_num = 4 #类属性
def __init__(self,name,age):
self.name = name #实例属性
self.age = age #实例属性
d1 = dog('大黄',1)# 实例化
d2 = dog('小黑',2)
print(d1.leg_num)#输出4
print(d2.leg_num)#输出4
print(d1.name,d1.age)#输出‘大黄 1’
print(d2.name,d2.age)#输出‘小黑 2’
d1.skin = '黑色'
print(d1.skin)#输出‘黑色’
如果试图通过实例修改类属性的值
__author__ = "Allen Liu"
__time__ = "2017/8/2"
'''This is an example ... '''
class dog(object):
leg_num = 4 #类属性
def __init__(self,name,age):
self.name = name #实例属性
self.age = age #实例属性
d1 = dog('大黄',1)# 实例化
d1.leg_num = 3
print(d1.leg_num,dog.leg_num)#输出为3,4
这时候发现类属性的值并没有改变,但是实例中该属性的值变了。