Python super初始化理解过程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python super初始化理解过程相关的知识,希望对你有一定的参考价值。
# -*- coding:utf-8 -*-<br data-filtered="filtered"> class A(object): def __init__(self, xing, gender): # !#1 self.namea = "aaa" # !#2 self.xing = xing # !#3 self.gender = gender # !#4 self.funca() def funca(self): print("function a : %s" % self.namea) class B(A): def __init__(self, xing, age): # !#5 super(B, self).__init__(xing, age) # !#6(age处应为gender) self.nameb = "bbb" # !#7 ##self.namea="ccc" # !#8 ##self.xing = xing.upper() # !#9 self.age = age # !#10 def funcb(self): print("function b : %s" % self.nameb) def funca(self): print("(override)function a : %s" % self.namea) b = B("lin", 22) # !#11 print(b.nameb) print(b.namea) print(b.xing) # !#12 print(b.age) print(b.gender) # !#13 b.funcb() b.funca()
上面程序的输出结果为:
(override)function a : aaa bbb aaa lin 22 22 function b : bbb (override)function a : aaa
以上程序说明如果父类初始化方法中有调用了父类中定义的方法,恰好这个方法又被子类所覆盖,则super(B, self).__init__(xing, age)调用的父类初始化方法中调用的方法将是被覆盖后的方法。
以上是关于Python super初始化理解过程的主要内容,如果未能解决你的问题,请参考以下文章
转python 调用super()初始化报错“TypeError: super() takes at least 1 argument”