国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

python調(diào)用父類方法的三種方式(super調(diào)用和父類名調(diào)用)

這篇具有很好參考價(jià)值的文章主要介紹了python調(diào)用父類方法的三種方式(super調(diào)用和父類名調(diào)用)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

子類調(diào)用父類的方法的三種方式:

  • 父類名.方法名(self)

  • super(子類名,self).父類方法名()

  • super().父類方法名

注意:super()通過子類調(diào)用當(dāng)前父類的方法,super默認(rèn)會(huì)調(diào)用第一個(gè)父類的方法(適用于單繼承的多層繼承

如下代碼:

# 自定義師傅類-古法
class Master(object):

    # 方法
    def make_cake(self):
        print("古法煎餅果子")
# 自定義師傅類-現(xiàn)代
class School(object):

    # 方法
    def make_cake(self):
        print("現(xiàn)代煎餅果子")
# 自定義一個(gè)徒弟類
class Prentice(Master, School):

    # 方法
    def make_cake(self):
        print("貓氏煎餅果子")
        Master.make_cake(self)
        School.make_cake(self)

    # 古法
    def make_old_cake(self):
        # 01 方式(單和多繼承 都適用)
        # Master.make_cake(self)

        # super默認(rèn)會(huì)調(diào)用第一個(gè)父類的方法(適用于單繼承 或者只想使用第一個(gè)父類的方法)

        # 02 方式 適用于新式類
        # 格式: super(子類類名, self).父類方法名()
        # super(Prentice, self).make_cake()

        # 03 方式 (適用于新式類) 02方式的簡寫
        super().make_cake()
    # 現(xiàn)代
    def make_new_cake(self):
        super().make_cake()
# 自定義一個(gè)對象 大貓
damao = Prentice()
# 貓氏
damao.make_cake()
# # 古法
# damao.make_old_cake()
# # 現(xiàn)代
# damao.make_new_cake()

super()調(diào)用父類的構(gòu)造方法

如下代碼:

class People:
    def __init__(self, name):
        self.name = name
    def say(self):
        print("我是人,名字為:", self.name)

class Animal:
    def __init__(self, food):
        self.food = food
    def display(self):
        print("我是動(dòng)物,我吃", self.food)

#People中的name屬性和say()會(huì)覆蓋Animal類中的
class Person(People, Animal):
    pass
#Python小白學(xué)習(xí)交流群:711312441
xiaobai = Person("小白")
#Person類同時(shí)繼承People和Animal,其中People在前。
#這意味著,在創(chuàng)建對象xiaobai時(shí),其將會(huì)調(diào)用從People類繼承來的構(gòu)造函數(shù),因此上面程序創(chuàng)建xiaobai對象的同時(shí),還要給name屬性進(jìn)行賦值。
xiaobai.say()
xiaobai.display()

上面代碼運(yùn)行結(jié)果:

我是人,名字為: 小白
Traceback (most recent call last):
AttributeError: 'Person' object has no attribute 'food'
#從Animal類中繼承的display()方法中,需要用到food屬性的值,
#但由于People類的構(gòu)造方法覆蓋了Animal類的構(gòu)造方法,使得在創(chuàng)建xiaobai對象時(shí),Animal類的構(gòu)造方法未得到執(zhí)行,所以程序出錯(cuò)。

針對這種情況,正確的做法是定義Person類自己的構(gòu)造方法(等同于重寫第一個(gè)直接父類的構(gòu)造方法),但是需要注意的是,在子類中定義構(gòu)造方法,則必須在該方法中調(diào)用父類的構(gòu)造方法。

  • 未綁定方式
  • 使用super()函數(shù),但如果涉及多繼承,該函數(shù)只能調(diào)用第一個(gè)直接父類的構(gòu)造方法。

也就是說,涉及到多繼承時(shí),在子類構(gòu)造函數(shù)中,調(diào)用第一個(gè)父類構(gòu)造方法的方式有以上兩種,而調(diào)用其他父類構(gòu)造方法的方式只能使用未綁定方法。

class People:
    def __init__(self, name):
        self.name = name
    def say(self):
        print("我是人,名字為:", self.name)
class Animal:
    def __init__(self, food):
        self.food = food
    def display(self):
        print("我是動(dòng)物,我吃", self.food)
class Person(People, Animal):
    #自定義構(gòu)造方法
    def __init__(self, name, food):
        #調(diào)用第一個(gè)父類的構(gòu)造方法
        super().__init__(name)
        #People.__init__(self, name)使用未綁定方法調(diào)用第一個(gè)父類的構(gòu)造方法
        #調(diào)用其他父類的構(gòu)造方法,需要手動(dòng)給self傳值
        Animal.__init__(self, food)
xiaobai = Person("xiaobai", "熟食")
xiaobai.say()
xiaobai.display()

運(yùn)行結(jié)果:

我是人,名字為: xiaobai
我是動(dòng)物,我吃 熟食

可以看到,Person類自定義的構(gòu)造方法中,調(diào)用People類構(gòu)造方法,可以使用super()函數(shù),也可以使用未綁定方法。但是調(diào)用Animal類的構(gòu)造方法,只能使用未綁定方法文章來源地址http://www.zghlxwxcb.cn/news/detail-455089.html

到了這里,關(guān)于python調(diào)用父類方法的三種方式(super調(diào)用和父類名調(diào)用)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Java父類強(qiáng)制轉(zhuǎn)換為子類的三種情況(推薦)

    Father f = new Father(); Son s = (Son)f;//出錯(cuò) ClassCastException Father f = new Son(); Son s = (Son)f;//可以 f只能用父類的方法 s可以用子類的所有方法 Son s = new Son(); Father f = (Father)s;//可以 f只能用父類的方法

    2024年02月08日
    瀏覽(24)
  • Vue子組件調(diào)用父組件事件的三種方法

    1. 在子組件中通過this.$parent.event來調(diào)用父組件的方法,data參數(shù)可選 2. 父組件使用v-bind綁定一個(gè)變量(v-bind:變量名=\\\"值\\\"),子組件用props接收(與created同級(jí)) 3.使用 $refs 傳值

    2024年02月15日
    瀏覽(24)
  • 【spring Cloud】微服務(wù)通信的三種方式RestTemplate、Feign遠(yuǎn)程調(diào)用與Dubbo的使用

    目錄 一、通過RestTemplate調(diào)用微服務(wù) 二、通過Feign遠(yuǎn)程調(diào)用 三、Dubbo? 分布式中的遠(yuǎn)程調(diào)用大概分為兩種 RESTful接口? REST,即Representational State Transfer的縮寫,如果一個(gè)架構(gòu)符合REST原則,就稱它為RESTful架構(gòu)。 每一個(gè)URI代表一種資源; 客戶端和服務(wù)器之間,傳遞這種資源的某種

    2024年04月11日
    瀏覽(20)
  • 在Keil C51中調(diào)用匯編代碼的三種方法

    在以下三個(gè)情況下, 我們可能會(huì)需要將匯編代碼嵌入到我們開發(fā)的Keil C程序中. 有一段現(xiàn)成的匯編代碼, 只需少量修改便可投入使用, 減少工作量 目前的程序需要提高速度, 如中斷處理代碼段 需要直接操作寄存器或特定的IO設(shè)備. 那么, 我們怎么實(shí)現(xiàn)在C代碼中融合匯編代碼呢? 有

    2024年02月01日
    瀏覽(19)
  • 終止python代碼運(yùn)行的三種方式

    終止python代碼運(yùn)行的三種方式

    一 sys.exit() 執(zhí)行這條語句會(huì)直接退出程序,也是常用的方法,不需要考慮平臺(tái)等因素的影響。它通常是退出 Python 程序的首選方法。 該方法包含一個(gè)參數(shù)status,默認(rèn)為0,表示正常退出,或1,表示異常退出。 此方法引發(fā) SystemExit 異常(這是唯一不被視為錯(cuò)誤的異常)。當(dāng)這個(gè)

    2024年02月05日
    瀏覽(20)
  • python生成excel文件的三種方式

    python生成excel文件的三種方式

    在我們做平常工作中都會(huì)遇到操作excel,那么今天寫一篇,如何通過python操作excel。當(dāng)然python操作excel的庫有很多,比如pandas,xlwt/xlrd,openpyxl等,每個(gè)庫都有不同的區(qū)別,具體的區(qū)別,大家一起來看看吧~ xlrd是對于Excel進(jìn)行讀取,xlrd 操作的是xls/xlxs格式的excel xlwt是對于Excel進(jìn)

    2024年02月15日
    瀏覽(29)
  • Python獲取本機(jī)IP地址的三種方式

    Python獲取本機(jī)IP地址的三種方式

    目錄 1、使用專用網(wǎng)址 2、使用自帶socket庫 3、使用第三方netifaces庫 獲取的是 公網(wǎng)IP 。 網(wǎng)址:http://myip.ipip.net 代碼: 具體可以類似這樣: ?比較喜歡用這個(gè),在命令窗口也能使用: 還可以用這個(gè): https://api.ipify.org 獲取的是 局域網(wǎng)IP 。 但是上面這個(gè)獲取的 不是 公網(wǎng)IP,結(jié)果

    2024年02月04日
    瀏覽(23)
  • 用python給照片添加水印的三種方式

    方式1:PIL模塊 給照片添加水印的代碼多種多樣,下面這種的或許是最為簡單的形式, 方式2:用opencv模塊 用opencv來給圖片添加水印,主要用到的是cv2.putText()方法,里面共有大概9個(gè)參數(shù),介紹如下: image :印有水印的圖片 text :水印的具體文字 org :水印放置的橫縱坐標(biāo),

    2024年02月11日
    瀏覽(16)
  • mysql查詢結(jié)果命令行方式導(dǎo)出/輸出/寫入到文件的三種方法

    mysql查詢結(jié)果命令行方式導(dǎo)出/輸出/寫入到文件的三種方法

    直接執(zhí)行命令: 在目錄/tmp/下會(huì)產(chǎn)生文件test.xls 遇到的問題: 可能原因:mysql沒有向/data/下寫的權(quán)限 查詢都自動(dòng)寫入文件: 跳出mysql命令行

    2024年02月11日
    瀏覽(26)
  • onnx轉(zhuǎn)TensorRT使用的三種方式(最終在Python運(yùn)行)

    onnx轉(zhuǎn)TensorRT使用的三種方式(最終在Python運(yùn)行)

    背景 記錄下onnx轉(zhuǎn)成TensorRT加速的三種方式 1. 直接使用onnxruntime 在onnxruntime的session初始化的時(shí)候第一個(gè)provider加入TensorrtExecutionProvider,軟件會(huì)自動(dòng)查找是否支持TensorRT,如果可以就會(huì)進(jìn)行轉(zhuǎn)換并運(yùn)行,如果不可以會(huì)接著找下一個(gè),也有可能TensorRT跑一半報(bào)錯(cuò),這就得看環(huán)境什么

    2024年02月08日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包