相关知识点
实例属性
实例属性和类属性的区别在于实例属性定义在类的__init__()魔法方法中,而类属性定义在类下:
class C:
b = 1 # 类属性
def __init__(self):
self.x = None # 实例属性
对于类属性这里不做说明,主要描述实例属性,
实例属性生效的方式要先知道的一点是Python中实例化一个类,类的魔法方法__init__()会被自动调用,
所以对于类对象C来说,是不存在实例属性的,在C类对象被实例化的时候,实例属性x才会被创建:
class C:
b = 1
def __init__(self):
self.x = None
print(C.b)
print(C.x)
上述代码中行7print会被执行,因为C.b是类属性,类属性可以被使用,
但是行7的print会报错AttributeError: type object ‘C’ has no attribute ‘x’ ,就是因为C类对象没有x属性,因为__init__()只有在类对象被实例化的时候,才会被执行,
当C类对象被实例化,访问实例对象的x,就不会报错,这就是实例属性(只有实例才能访问):
class C:
b = 1
def __init__(self):
self.x = None
a = C() # 实例化C
print(a.x) # 访问a实例的x