python 判斷,python中的super使用方法[探索4]

 2023-10-21 阅读 30 评论 0

摘要:super super是一種子類調用父類的方法,在單繼承時,super獲取的類剛好是父類,但多繼承時,super獲取的是繼承順序中的下一個類。 學習自博客: https://www.jianshu.com/p/8ddb595628d1 假設多繼承關系如下所示: Base 父類 A B 子類1

super

super是一種子類調用父類的方法,在單繼承時,super獲取的類剛好是父類,但多繼承時,super獲取的是繼承順序中的下一個類。
學習自博客:
https://www.jianshu.com/p/8ddb595628d1
假設多繼承關系如下所示:
Base 父類
A B 子類1
C 子類2

class Base(object):def __init__(self):print('Base')
class A(Base):def __init__(self):print('A')super(A,self).__init__()print('A1')
class B(Base):def __init__(self):print('B')super(B,self).__init__()print('B1')
class C(A,B):def __init__(self):print('C')super(C,self).__init__()print('C1')
C()
輸出:
C
A
B
Base
B1
A1
C1
<__main__.C at 0x7f116638fbe0>

另一個例子:
https://www.jb51.net/article/128571.htm

class A(object):def __init__(self):self.n = 10def minus(self, m): #step4,繼承自身object,n=15self.n -= m #step7,n=8-2=6class B(A):def __init__(self):self.n = 7def minus(self, m): #step2,繼承A,n=15super(B,self).minus(m)self.n -= 2 #step6,n=10-2=8class C(A):def __init__(self):self.n = 12def minus(self, m):super(C,self).minus(m) #step3,繼承A,n=15self.n -= 5 #step5,n=15-5=10class D(B, C):def __init__(self):self.n = 15def minus(self, m):super(D,self).minus(m) #step1,繼承B,但n=15不會變的self.n -= 2 #step8,n=6-2=4
d=D() #實例化D
d.minus(2) #給實例D傳入參數m=2
print(d.n)
輸出:
4
總結:
D-B-C-A-C-B-A-D這是繼承的過程

python 判斷?注意:實例化類后,進行方法引用時,第一步肯定是執行__init__(),但是如果存在繼承,那么父類中的__init__()將不起作用,繼承過程中用的初始化數據屬都是子類的

本人現在的研究方向是:
圖像的語義分割,如果有志同道合的朋友,可以組隊學習
haiyangpengai@gmail.com qq:1355365561

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/156761.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息