python 類的繼承 super

2021-09-26 12:33:18 字數 1404 閱讀 1865

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類以後,入邊...