亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

更多QQ空间微信QQ好友腾讯朋友复制链接
您的位置:首頁/技術文章
文章詳情頁

python 子類調用父類的構造函數實例

【字号: 作者:豬豬瀏覽:2日期:2022-08-02 16:02:48

當子類繼承父類后,需要調用父類的方法和屬性時,需要調用父類的初始化函數。

class A(object): def __init__(self): self.nameaa = ’aa’ def funca(self): print(’function a %s’ % self.nameaa) class B(A): def __init__(self): self.namebb = ’bb’ def funcb(self): print(’function b %s’ % self.namebb) b = B()print(b.namebb)b.funcb()print(b.nameaa)b.funca()

在子類中重寫了構造函數,但新的構造函數沒有初始化父類,當沒有初始化父類的構造函數時,就會報錯。

python 子類調用父類的構造函數實例

(1)調用超類的構造方法

class A(object): def __init__(self): self.nameaa = ’aa’ def funca(self): print(’function a %s’ % self.nameaa) class B(A): def __init__(self): self.namebb = ’bb’ A.__init__(self) #添加 def funcb(self): print(’function b %s’ % self.namebb) b = B()print(b.namebb)b.funcb()print(b.nameaa)b.funca()

python 子類調用父類的構造函數實例

(2)使用super函數

class A(object): def __init__(self): self.nameaa = ’aa’ def funca(self): print(’function a %s’ % self.nameaa) class B(A): def __init__(self): self.namebb = ’bb’ super(B,self).__init__() def funcb(self): print(’function b %s’ % self.namebb) b = B()print(b.namebb)b.funcb()print(b.nameaa)b.funca()

python 子類調用父類的構造函數實例

super函數返回一個super對象,解析過程自動查找所有的父類和父類的父類,當前類和對象可以作為super函數的參數使用,調用函數返回的方法是超類的方法。使用super函數如果子類繼承多個父類只許一次繼承,使用一次super函數即可。

如果沒有重寫子類的構造函數,是可以直接使用父類的屬性和方法的。

class A(object): def __init__(self): self.nameaa = ’aa’ def funca(self): print(’function a %s’ % self.nameaa) class C(A): passc = C()c.funca()print(c.nameaa)

python 子類調用父類的構造函數實例

補充知識:python3 和python2 調用父類構造方法寫法區別

1. python3 和python2 調用父類構造方法寫法區別

前一段時間,把之前的一個項目遷移到python3

發現了很多不同的地方.我這里簡單說明了,構造方法的不同 之后可能會繼續更新不同. 主要針對項目遷移進行總結,反思. 這里就當做筆記.

python3 代碼 調用父類的構造方法

#!/usr/bin/env python3# -*- coding: UTF-8 -*-'''@author: Frank @contact: frank.chang@shoufuyou.com@file: py2topy3.py@time: 2018/7/7 上午7:09## python3 代碼 ''' import threadingimport queue _sentinel = object() class Consumer(threading.Thread): ''' 消費者線程類 ''' def __init__(self, name, queue): super().__init__(name=name) self.queue = queue def run(self): while True: values = self.queue.get(timeout=None) if values is _sentinel:self.queue.put(values)break ##process values ##xxx print(’consume is consuming data {}’.format(values)) print('{} finished'.format(self.getName())) if __name__ == ’__main__’: q = queue.Queue() concumser = Consumer(’consumer’, q) print(concumser)

2 python2.7 調用父類的構造方法

#!/usr/bin/env python3# -*- coding: UTF-8 -*-'''@author: Frank @contact: frank.chang@shoufuyou.com@file: 3.py@time: 2018/7/7 上午7:05''' import Queueimport threading # 哨兵_sentinel = object() class Consumer(threading.Thread): ''' 消費者線程類 ''' def __init__(self, name, queue): super(Consumer, self).__init__(name=name) self.queue = queue def run(self): while True: values = self.queue.get(timeout=None) if values is _sentinel:self.queue.put(values)break ##process values ##xxx print(’consume is consuming data {}’.format(values)) print('{} finished'.format(self.getName())) if __name__ == ’__main__’: q = Queue.Queue() concumser = Consumer(’consumer’, q) print(concumser)

區別

主要區別是 super 的變化,

python3 中直接 super().init() 中 super 不需要傳遞任何參數,直接可以調用父類的構造方法

python2 中 super(Consumer, self).init(), 需要傳兩個參數一個是類名, 一個是self. 這樣比較麻煩,很容易混淆. 但是python3 這里處理的比較好了.

可以看下這個文檔 https://docs.python.org/3/library/functions.html#super

順便提一下, python2 和python3 中 quque 名稱換了,python3 用的是小寫 作為模塊名稱.

以上這篇python 子類調用父類的構造函數實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 成人女人a毛片在线看 | 久久精品国产网红主播图片 | 免费在线你懂的 | 日韩美aaa特级毛片 日韩美a一级毛片 | 国产精品v欧美精品v日本精 | 欧美大黄视频 | 亚洲三级精品 | 男女啪啪免费观看网站 | 国产色婷婷免费视频 | 日韩精品福利视频一区二区三区 | 国产玖玖 | 97一级毛片全部免费播放 | 亚洲色综合图区p | 日本高清不卡一区久久精品 | 美女黄色在线观看 | 欧洲免费无线码二区5 | 男女做a一级视频免费观看 男女喷水视频 | 国产一区二区在线看 | 欧美精品一区二区三区视频 | 欧美激情在线播放第16页 | 99在线国内精品自产拍 | 麻豆视频网站在线观看 | 国产综合久久久久久 | 国产精品成人观看视频网站 | 亚洲精品久久久久中文字小说 | 国产亚洲精品美女 | 网址在线观看 | 永久免费看电视网站 | 中文字幕一级毛片视频 | 黄色a视频 | 国产欧美一区二区三区视频 | 污污的免费网站 | 日本黄色免费网站 | 日韩免费毛片视频 | 国产精品视屏 | 久草在线观看福利 | 国产 另类 在线 欧美日韩 | 国产孕妇孕交600集 国产在视频线精品视频www666 | 日本一极毛片兔费看 | 在线中文天堂 | 国产精品制服诱惑 |