日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python类继承的重写和super

發布時間:2025/3/20 python 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python类继承的重写和super 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

給已經存在的類添加新的行為,繼承是非常好的實現方式。但是如果要改變行為呢?比如在Python繼承擴展內置類,我們的contact類只允許一個名字和一個郵箱,但是如果要對某些人增加電話號碼呢?這里可以通過非常簡單的給他增加一個電話號碼的屬性來實現,但是如果想這第3個變量在初始化類的時候就可用,就需要重寫__init__函數

重寫就是在子類里用一個(和超類相同的名字)新的方法來改變或者覆蓋超類里的這個方法。做這個不需要特殊的語法,會自動執行子類新創建的方法而不是超類的方法。以下是在之前Contact類中,使用Friend子類來繼承

class ContactList(list):def search(self, name):'''Return all contacts that contain the search valuein their name.'''matching_contacts = []for contact in self:if name in contact.name:matching_contacts.append(contact)return matching_contactsclass Contact:all_contacts = ContactList()def __init__(self, name, email):self.name = nameself.email = emailContact.all_contacts.append(self)class Supplier(Contact):def order(self, order):print("If this were a real system we would send""{} order to {}".format(order, self.name))class Friend(Contact):'''以下是重寫方法,注意這個方法沒有將name和email等加入父類的all_contact '''def __init__(self, name, email, phone):self.name = name self.email = emailself.phone = phoneclass Friend1(Contact):'''通過super得到父類對象的實例,并且調用這個對象的__init__方法,傳遞給它預期的參數,然后這個類做了自己的初始化,即設置phone屬性'''def __init__(self, name, email, phone):super().__init__(name, email)self.phone = phone

不只有__init__,任何方法都可以被重寫。在這個例子中,Contact和Friend類有重復的代碼來創建name和email,這會導致維護變得復雜。需要警惕的是,Friend類忽略了把自己加到all_contacts列表里,這個列表是我們在Contact類里創建的。將以上代碼保存為order.py腳本,如下是在交互的解釋器里運行的結果如下:

$ python -i order.py >>> c1 = Contact("John A", "johna@example.com") >>> c2 = Contact("John B", "johnb@example.com") >>> c3 = Contact("Jenna C", "jennac@example.com") >>> c4 = Friend("Friend c", "Friendc@example.com",'0592-5566778') >>> c5 = Friend("Friend 5", "Friend5@example.com",'0592-1122334') >>> c6 = Friend1("Friend 6", "Friend6@example.com",'0592-4455667') >>> c7 = Friend1("Friend 7", "Friend7@example.com",'0592-7788990') >>> [c.name for c in Contact.all_contacts] ['John A', 'John B', 'Jenna C', 'Friend 6', 'Friend 7']

我們真正需要的是一種可以調用父類的代碼的方法,這個就是super函數的功能,他返回一個父類的實例化對象,允許我們直接調用父類的方法,如上例中的Friend1類。

super()可以在任何方法中調用,不只是__init__方法,這就意味著通過重寫和調用super,可以修改所有的方法。可以在方法的任何位置用super。

?

參考:

1、《Python3 面向對象編程》 [加]Dusty Philips 著

轉載于:https://www.cnblogs.com/anovana/p/8142686.html

總結

以上是生活随笔為你收集整理的python类继承的重写和super的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 女同av网站 | 国产高清第一页 | 奇米狠狠去啦 | 草久在线 | 午夜精品久久久久久久久久蜜桃 | 草久久久 | 午夜视频福利网站 | 一区二区三区欧美日韩 | 91免费看大片 | 免费激情网站 | 亚洲精品免费看 | 丝袜老师扒开让我了一夜漫画 | 成年人视频网 | 亚洲天堂日本 | 午夜色大片 | 一区二区三区在线免费视频 | 高清国产一区二区 | 姑娘第5集高清在线观看 | 中文字幕在线观看精品 | 欧美99久久精品乱码影视 | 国产乱码久久久 | 国产黄a | 国产尤物在线视频 | 91免费黄视频 | 黄色成年人视频 | 在线无 | 91精产国品一二三区在线观看 | 免费在线性爱视频 | youjizz.com在线观看 | 国产99精品视频 | 红桃视频黄色 | 成人免费毛片aaaaaa片 | 久久久久亚洲av成人网人人软件 | 国产又黄又爽 | 大地资源影视在线播放观看高清视频 | 夜夜躁狠狠躁日日躁av | 人人看人人模 | 亚洲av永久无码精品一区二区国产 | 精品欧美激情精品一区 | 亚洲成人一区在线 | 九色在线观看视频 | 精品在线视频一区二区三区 | 黄色污污视频 | 成年人高清视频 | 亚洲一区二区精品视频 | 色图插插插| 涩涩视频网站 | 国产乱码精品一区二三赶尸艳谈 | 久久色av | 天堂av2020 | www午夜| 午夜国产精品视频 | 人妻 丝袜美腿 中文字幕 | 最新日韩三级 | 四虎精品在线 | 丁香九月激情 | 超碰997 | 欧美v亚洲 | 国产激情av | 亚洲黄色录像 | 一区二区内射 | 播五月婷婷 | 999热精品视频 | 狠狠干狠狠干 | 国产福利视频在线 | a三级黄色片 | 成人手机av| 中国黄色三级 | 波多野结衣电影免费观看 | 天天搞夜夜 | 国产香蕉97碰碰碰视频在线观看 | 可以直接看的无码av | 91久久婷婷 | 亚洲一区视频网站 | 日韩视频一区 | 西欧free性满足hd老熟妇 | 国产精品suv一区 | 波多野结衣之双调教hd | 992tv在线成人免费观看 | 热热热热色 | 久操国产在线 | 国产在线最新 | 精品久久精品久久 | 热久久最新| 国产亚洲欧美日韩高清 | 特级丰满少妇一级aaa爱毛片 | 国产婷婷色 | 国产成人综合一区二区三区 | 五月天欧美 | 91蜜桃传媒精品久久久一区二区 | 欧美日韩在线影院 | av网站久久 | 亚洲女女做受ⅹxx高潮 | 亚洲第一区av | 欧美成人精品一区二区三区在线观看 | 99成人精品视频 | 金鱼妻日剧免费观看完整版全集 | 国产伦精品一区二区三区视频孕妇 | 97超碰网 |