a表示类的属性,而self.a表示类的实例属性,实例属性只能在__init__
中定义,且不可通过类名来调用实例属性,如下面的print(A.b)
class A:
a = 1 # 类的属性
def __init__(self):
self.b = 2 # 实例属性
c = 3
def fun(self):
self.e = 4
f = 5
ex = A()
print(ex.a) # 显示 1
print(ex.b) # 显示 2
print(ex.c) # error 类无c属性,c只是—init函数内部的一个变量
print(ex.e) # error 类无e属性,实例对象应该在__init__函数中定义,在类中其他函数中定义则不能成为实例属性被实例调用
print(ex.f) # error 类无f属性,同上f也只是fun函数内部的一个变量,无法在外部使用
print(A.a) # 显示 1
print(A.b) # error 不可通过类来调用实例属性,(类.实例属性)