情形一:类变量和实例变量没有同名(在本例子中实例变量d与类变量num不同名)
- 在Father类中有两个变量: num是类变量,d是实例变量。因此num可以通过类名进行访问,而d不能通过类名访问,但可以通过实例访问d(self是代表类的实例化,因此是可以通过self访问d的)
- 当然,类变量也是可以通过实例来进行访问,即通过self进行访问,通过类名访问num和通过self访问num的结果是一样的
class Father():
num = 100 #类变量
def __init__(self):
self.d = 10 #实例变量
class Son(Father):
def __init__(self):
super().__init__()
def demo(self):
print(Father.num)
#print(Father.d) #会报错
print(self.d)
print(self.num)
so = Son()
so.demo()
情形二:类变量和实例变量同名(在本例子中实例变量num与类变量num同名)
- 通过类名访问num和通过self访问num的结果是不一样的
- 类变量与实例变量是相互独立的
class Father():
num = 100 #类变量
def __init__(self):
self.d = 10 #实例变量
self.num=1000
class Son(Father):
def __init__(self):
super().__init__()
def demo(self):
#print(Father.d) #会报错
print(self.d) #10
print(self.num) #100
print(Father.num) #1000
so = Son()
so.demo()