python中類(lèi)的初始化方法是__init__(),因此父類(lèi)子類(lèi)的初始化方法都是這個(gè),如果子類(lèi)不實(shí)現(xiàn)這個(gè)函數(shù),初始化時(shí)調(diào)用父類(lèi)的初始化函數(shù),如果子類(lèi)實(shí)現(xiàn)這個(gè)函數(shù),就覆蓋了父類(lèi)的這個(gè)函數(shù),既然繼承父類(lèi),就要在這個(gè)函數(shù)里顯式調(diào)用一下父類(lèi)的__init__(),這跟C++,jAVA不一樣,他們是自動(dòng)調(diào)用父類(lèi)初始化函數(shù)的。
調(diào)用父類(lèi)函數(shù)有以下方法:
class A:
def method(self, arg):
pass
class B(A):
def method(self, arg):
# A.method(self,arg) # 1
# super(B, self).method(arg) #2
super().method(arg) #3
1.直接寫(xiě)類(lèi)名調(diào)用
2.用 super(type, obj).method(arg)方法調(diào)用。
3.在類(lèi)定義中調(diào)用本類(lèi)的父類(lèi)方法,可以直接 super().method(arg).
在代碼中調(diào)用對(duì)象的父類(lèi)的方法的示例:
ob = B()
super(B,ob).method(arg) #調(diào)用class B的父類(lèi)class A的method。
初始化中調(diào)用父類(lèi)初始化方法示例:
class B(A):
def __init__(self):
super().__init__()
更多信息請(qǐng)查看IT技術(shù)專(zhuān)欄