super()函式主要是用來呼叫父類(單繼承時),在多繼承時會涉及mro順序問題。
class a():
def __init__(self,name):
print('a的__init__()')
self.name = name
def p(self):
print(self.name)
class b(a):
def __init__(self):
# 繼承的時候,父類的初始話引數也得傳進去
super(b,self).__init__(name=none)
# 子類自己的__init__()沒有引數,所以例項化時候不用傳進去
b = b()
#super()繼承之後,把父類的方法也繼承下來。
b.p()
a的__init__()
none
class a():
def __init__(self,name):
print('a的__init__()'+'\n')
self.name = name
def p(self):
print(self.name)
class b(a):
def __init__(self,name):
super(b,self).__init__(name=none)
# 屬性覆蓋
self.name = name
# 函式覆蓋
def p(self):
print('b的p()函式')
print('name:',self.name)
c = b('c')
c.p()
a的__init__()
b的p()函式
name: c
class a():
def __init__(self,name):
print('a的__init__()'+'\n')
self.name = name
def p(self):
print(self.name)
class b(a):
def __init__(self,name):
self.name = name
# 繼承也會覆蓋屬性
super(b,self).__init__(name=none)
def p(self):
print('b的p()函式')
print('name:',self.name)
c = b('c')
c.p()
a的__init__()
b的p()函式
name: none
python 中類繼承的super 方法
參考 python中的super 方法主要用於子類引用父類方法,因為這樣做可以提高 的復用性 usr bin env python coding utf 8 用於測試類繼承的super 方法 class a object 父類 def init self,a,b self.a a self.b b ...
Python內建函式super 繼承父類
python內建函式super 主要用於類的多繼承中,用來查詢並呼叫父類的方法,所以在單重繼承中用不用 super 都沒關係 但是,使用 super 是乙個好的習慣。一般我們在子類中需要呼叫父類的方法時才會這麼用。下面是一段示例 類c a 中繼承父類a。執行c的例項化時,流程為 1 執行a的例項化,...
python多重繼承和super
本文只說現在python繼承順序採用的c3演算法,只要弄明白c3演算法,你就知道super函式的工作原理。c3演算法的規則如下 從底層開始,選擇入邊為零的點。從左到右。深度探索。但受限與 規則。每乙個類都可以用mro函式檢視自己的繼承順序 例子1.菱形繼承1 分析 規則。得到a類,去掉a類以後,入邊...