chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

python子類(lèi)定制父類(lèi)及多態(tài)調(diào)用介紹

jf_78858299 ? 來(lái)源:梯閱線(xiàn)條 ? 作者:小梯子 ? 2023-02-23 14:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

python通過(guò)子類(lèi)繼承超類(lèi)來(lái)定制子類(lèi)的行為。

1.1 重寫(xiě)類(lèi)方法

(1)如果子類(lèi)和超類(lèi)有同名方法,根據(jù)搜索樹(shù)規(guī)則,優(yōu)先調(diào)用子類(lèi)方法。

(2)子類(lèi)重寫(xiě)超類(lèi)方法:在子類(lèi)定義和父類(lèi)已有的同名的方法。

(3)一般是對(duì)父類(lèi)方法的加強(qiáng),即存在父類(lèi)方法的處理邏輯。

1.2 父類(lèi)名.方法名

用法

class SupClass:
   def methodA(self):pass
   
class SubClass(SupClass):
   def methodA(self):
       SupClass.methodA(self)
       pass

描述

在子類(lèi),通過(guò)“父類(lèi)名.方法名”調(diào)用父類(lèi)同名方法,達(dá)到簡(jiǎn)化代碼的效果。

SupClass.methodA(self):

(1)通過(guò)“類(lèi)名.方法名”調(diào)用方法時(shí),需要送一個(gè)實(shí)例給方法。

(2)self為當(dāng)前調(diào)用方法的實(shí)例,故需顯式將self送給父類(lèi)方法。

1.3 多態(tài)

python子類(lèi)如果重寫(xiě)超類(lèi)的方法,那么根據(jù)搜索樹(shù)規(guī)則:

超類(lèi)實(shí)例對(duì)象,會(huì)調(diào)用超類(lèi)的同名方法;

子類(lèi)實(shí)例對(duì)象,會(huì)調(diào)用子類(lèi)的同名方法;

即,會(huì)根據(jù)當(dāng)前調(diào)用實(shí)例,自動(dòng)調(diào)用對(duì)應(yīng)的方法。

條件:

(1) 繼承:多態(tài)發(fā)生在子類(lèi)和超類(lèi)之間

(2) 重寫(xiě):子類(lèi)重寫(xiě)父類(lèi)方法。

1.4 示例

class Tool:
   def payraise(self,p,*args):
       p.payraise(*args)
       
class MyPerson:
   def __init__(self,name,job = None,pay = 0):
       self.name = name
       self.job = job
       self.pay = pay
   def payraise(self,rate):
       self.pay = int(self.pay * (1 + rate))
   def __str__(self):
       return 'MyPerson:name={0.name},job={0.job},pay={0.pay}'.format(self)

class MyManager(MyPerson):# 繼承
   # 重寫(xiě)
   def payraise(self,rate,bonus=0.1):
       MyPerson.payraise(self,rate+bonus)
       
if __name__ == '__main__':
   mp1 = MyPerson('mp1')
   mp2 = MyPerson('mp2','c++開(kāi)發(fā)',20000)
   mm1 = MyManager('mm1','開(kāi)發(fā)經(jīng)理',50000)
   
   print(mp1)
   print(mp2)
   print(mm1)
   
   mp2.payraise(0.1)
   mm1.payraise(0.1)
   print(mp2)
   print(mm1)  
   
   print('#'*10+'多態(tài)'+'#'*10)
   for p in (mp1,mp2,mm1):
       p.payraise(0.1)
       print(p)
       
   t = Tool()
   
   print('#'*10+'多態(tài)'+'#'*10)
   for p in (mp1,mp2,mm1):
       t.payraise(p,0.1)
       print(p)
# 打開(kāi)cmd,執(zhí)行下面示例
E:\\documents\\F盤(pán)>python myperson.py
MyPerson:name=mp1,job=None,pay=0
MyPerson:name=mp2,job=c++開(kāi)發(fā),pay=20000
MyPerson:name=mm1,job=開(kāi)發(fā)經(jīng)理,pay=50000
MyPerson:name=mp2,job=c++開(kāi)發(fā),pay=22000
MyPerson:name=mm1,job=開(kāi)發(fā)經(jīng)理,pay=60000
##########多態(tài)##########
MyPerson:name=mp1,job=None,pay=0
MyPerson:name=mp2,job=c++開(kāi)發(fā),pay=24200
MyPerson:name=mm1,job=開(kāi)發(fā)經(jīng)理,pay=72000
##########多態(tài)##########
MyPerson:name=mp1,job=None,pay=0
MyPerson:name=mp2,job=c++開(kāi)發(fā),pay=26620
MyPerson:name=mm1,job=開(kāi)發(fā)經(jīng)理,pay=86400
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編程語(yǔ)言
    +關(guān)注

    關(guān)注

    10

    文章

    1956

    瀏覽量

    36551
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4827

    瀏覽量

    86625
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    請(qǐng)教:子類(lèi)數(shù)據(jù)流使用類(lèi)后數(shù)據(jù)類(lèi)型就變成類(lèi)了而不是子類(lèi)

    本帖最后由 wyq95361977 于 2016-6-29 19:50 編輯 在練習(xí)系類(lèi)時(shí)碰到一個(gè)問(wèn)題例子中使用信號(hào)燈再使用定時(shí)器,類(lèi)的關(guān)系還是不變都是子類(lèi)但是我在練習(xí)時(shí)類(lèi)數(shù)據(jù)流
    發(fā)表于 06-29 19:40

    建立類(lèi)即其子類(lèi)的同名方法——關(guān)于重寫(xiě)VI的問(wèn)題

    隨著項(xiàng)目的進(jìn)行,發(fā)現(xiàn)類(lèi)的重要性,最近學(xué)習(xí)時(shí)遇到了一些問(wèn)題:按照《寶典》的介紹(P353),創(chuàng)建了一個(gè)運(yùn)算類(lèi)作為類(lèi),又創(chuàng)建了一個(gè)加法
    發(fā)表于 09-23 17:07

    3分鐘看懂Python面向?qū)ο?/a>

    的直接感覺(jué)是這是一種復(fù)用代碼的行為。繼承可以理解為它是以普通的類(lèi)為基礎(chǔ)建立專(zhuān)門(mén)的類(lèi)對(duì)象,子類(lèi)和它繼承的類(lèi)是IS-A的關(guān)系。多重繼承:不同于
    發(fā)表于 06-08 14:20

    如何使用Python類(lèi)? 優(yōu)勢(shì)有哪些?

    多態(tài)  如果子類(lèi)繼承了類(lèi),但是又想改變類(lèi)的方法,則這時(shí)無(wú)須修改
    發(fā)表于 07-30 18:08

    python類(lèi)的繼承

    python類(lèi)的繼承類(lèi)的繼承,跟人類(lèi)繁衍的關(guān)系相似。被繼承的類(lèi)稱(chēng)為基類(lèi)(也叫做
    發(fā)表于 03-08 16:40

    python類(lèi)多態(tài)類(lèi)的property屬性

    python類(lèi)多態(tài)多態(tài),是指在同一類(lèi)型下的不同形態(tài)。比如下面這段代碼class People: def speak(self):passc
    發(fā)表于 03-09 16:38

    詳解IO設(shè)備管理之父類(lèi)調(diào)用子類(lèi)方法的過(guò)程

    ,對(duì)象創(chuàng)建和初始化流程結(jié)束。——這個(gè)注冊(cè)過(guò)程映射到面向?qū)ο笾?,是繼承類(lèi)方法后子類(lèi)改寫(xiě)類(lèi)方法的過(guò)程。2.2.2 再看對(duì)象使用從上往下
    發(fā)表于 10-09 15:18

    探討一下JAVA子類(lèi)調(diào)用類(lèi)構(gòu)造器函數(shù)

    ;#125;子類(lèi) 調(diào)用 類(lèi)的構(gòu)造函數(shù):(構(gòu)造函數(shù)不會(huì)被繼承,只是被子類(lèi)調(diào)用而已)1、
    發(fā)表于 10-19 14:51

    更好地理解SystemVerilog的多態(tài)Polymorphism

    保存子類(lèi)對(duì)象,并直接使用類(lèi)句柄來(lái)調(diào)用子類(lèi)的方法。因此,SystemVerilog中的多態(tài)性是一
    發(fā)表于 12-05 17:34

    python類(lèi)的繼承詳解

    python類(lèi)的繼承 類(lèi)的繼承,跟人類(lèi)繁衍的關(guān)系相似。 被繼承的類(lèi)稱(chēng)為基類(lèi)(也叫做
    的頭像 發(fā)表于 03-08 16:40 ?3393次閱讀

    python類(lèi)多態(tài)類(lèi)的property屬性

    python類(lèi)多態(tài) 多態(tài),是指在同一類(lèi)型下的不同形態(tài)。 比如下面這段代碼 class People: def speak(self): p
    的頭像 發(fā)表于 03-09 16:37 ?1446次閱讀

    淺析JVM虛方法表和方法調(diào)用

    今天我們來(lái)填坑,在之前的一篇文章深挖?向?qū)ο缶幊倘?特性 --封裝、繼承、多態(tài)中 我們遺留了一個(gè)問(wèn)題:當(dāng)類(lèi)引用指向子類(lèi)對(duì)象時(shí),JVM是如何知曉調(diào)用
    的頭像 發(fā)表于 03-02 09:57 ?1104次閱讀
    淺析JVM虛方法表和方法<b class='flag-5'>調(diào)用</b>

    子類(lèi)中繼承類(lèi)的方法

    首先得在類(lèi)中創(chuàng)建一個(gè)方法,利用創(chuàng)建的方法的格式void+方法名(){},然后在子類(lèi)調(diào)用這個(gè)方法:直接輸入方法名,再按enter,便會(huì)出現(xiàn)super.方法名(),表示
    的頭像 發(fā)表于 04-06 14:53 ?1704次閱讀
    <b class='flag-5'>子類(lèi)</b>中繼承<b class='flag-5'>父</b><b class='flag-5'>類(lèi)</b>的方法

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

    我們分析這句話(huà)“類(lèi)對(duì)象的引用”,那說(shuō)明我們使用的時(shí)候只能在子類(lèi)中使用,既然是對(duì)象的引用,那么我們也可以用來(lái)調(diào)用成員屬性以及成員方法,當(dāng)然了,這里的 super 關(guān)鍵字還能夠
    的頭像 發(fā)表于 10-10 16:42 ?1336次閱讀
    super<b class='flag-5'>調(diào)用</b><b class='flag-5'>父</b><b class='flag-5'>類(lèi)</b>的構(gòu)造方法

    java子類(lèi)可以繼承類(lèi)的什么

    Java是一種面向?qū)ο蟮木幊陶Z(yǔ)言,它支持繼承的概念。繼承是面向?qū)ο缶幊痰娜筇匦灾?,它允許一個(gè)類(lèi)(稱(chēng)為子類(lèi)或派生類(lèi))繼承另一個(gè)類(lèi)(稱(chēng)為
    的頭像 發(fā)表于 08-20 11:02 ?2314次閱讀