Python类的继承问题
一个很经典的关于类的继承的分析
class Displayer:
def display(self,message): #3:跳转到此,打印
print(message)
class LoggerMixin:
def log(self,message,filename="logfile.txt"): #6:传递变量中有文件名,所以文件名为:subclass.txt,
# 将变量message用追加模式,新建一个文本,将信息导入
with open(filename,"a") as f:
f.write(message)
def display(self,message):
super().display(message) #2:到此方法第一句super调用其父类的display方法,但是LoggerMixin没有父类,
# 根据mro顺序(深度优先遍历),跳转到Displayer类中
self.log(message) #4:最易混淆的点,这里的self代指实例对象,实例对象为MysubClass()所以在这里
# 调转到MysubClass的log方法
class MysubClass(LoggerMixin,Displayer):
def log(self,message):
super().log(message,filename="subclass.txt") #5:跳转到此,实行第一句super,寻找父类LoggerMixin中的log方法
subclass = MysubClass() #subclass为MysubClass的实例对象,
subclass.display("this is a test") #1:实例对象调用MysubClass的display方法,但是MysubClass中并没有该方法,因此类继承L和D所以也继承方法,
#根据Python前左后右,去寻找LoggerMixin中的display方法
meo顺序:可以等价为深度优先遍历
self:其为实例本身,可以看为c中的指针

浙公网安备 33010602011771号