最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python 子類調(diào)用父類的構(gòu)造函數(shù)實(shí)例

 更新時(shí)間:2020年03月12日 10:25:39   作者:homle  
這篇文章主要介紹了python 子類調(diào)用父類的構(gòu)造函數(shù)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

當(dāng)子類繼承父類后,需要調(diào)用父類的方法和屬性時(shí),需要調(diào)用父類的初始化函數(shù)。

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()

在子類中重寫了構(gòu)造函數(shù),但新的構(gòu)造函數(shù)沒有初始化父類,當(dāng)沒有初始化父類的構(gòu)造函數(shù)時(shí),就會(huì)報(bào)錯(cuò)。

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

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()

(2)使用super函數(shù)

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()

super函數(shù)返回一個(gè)super對(duì)象,解析過程自動(dòng)查找所有的父類和父類的父類,當(dāng)前類和對(duì)象可以作為super函數(shù)的參數(shù)使用,調(diào)用函數(shù)返回的方法是超類的方法。使用super函數(shù)如果子類繼承多個(gè)父類只許一次繼承,使用一次super函數(shù)即可。

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

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

補(bǔ)充知識(shí):python3 和python2 調(diào)用父類構(gòu)造方法寫法區(qū)別

1. python3 和python2 調(diào)用父類構(gòu)造方法寫法區(qū)別

前一段時(shí)間,把之前的一個(gè)項(xiàng)目遷移到python3

發(fā)現(xiàn)了很多不同的地方.我這里簡(jiǎn)單說明了,構(gòu)造方法的不同 之后可能會(huì)繼續(xù)更新不同. 主要針對(duì)項(xiàng)目遷移進(jìn)行總結(jié),反思. 這里就當(dāng)做筆記.

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

#!/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 threading
import queue
 
_sentinel = object()
 
 
class Consumer(threading.Thread):
  """
  消費(fèi)者線程類
  """
 
  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 調(diào)用父類的構(gòu)造方法

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
"""
@author: Frank 
@contact: frank.chang@shoufuyou.com
@file: 3.py
@time: 2018/7/7 上午7:05
"""
 
import Queue
import threading
 
# 哨兵
_sentinel = object()
 
 
class Consumer(threading.Thread):
  """
  消費(fèi)者線程類
  """
 
  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)

區(qū)別

主要區(qū)別是 super 的變化,

python3 中直接 super().init() 中 super 不需要傳遞任何參數(shù),直接可以調(diào)用父類的構(gòu)造方法

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

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

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

以上這篇python 子類調(diào)用父類的構(gòu)造函數(shù)實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python selenium循環(huán)登陸網(wǎng)站的實(shí)現(xiàn)

    python selenium循環(huán)登陸網(wǎng)站的實(shí)現(xiàn)

    這篇文章主要介紹了python selenium循環(huán)登陸網(wǎng)站的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Python解包中*和**的最全用法

    Python解包中*和**的最全用法

    本文主要介紹了Python解包中*和**的最全用法,它們具有多種用途,包括解包參數(shù)、擴(kuò)展序列、字典和集合操作等,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-11-11
  • pycharm中使用request和Pytest進(jìn)行接口測(cè)試的方法

    pycharm中使用request和Pytest進(jìn)行接口測(cè)試的方法

    這篇文章主要介紹了pycharm中使用request和Pytest進(jìn)行接口測(cè)試的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 關(guān)于dataframe排序 pd.rank()

    關(guān)于dataframe排序 pd.rank()

    pandas.DataFrame.rank方法支持不同的排序方式,如按行或列、升序或降序等,主要參數(shù)包括axis控制按行或列排名,method定義相同值的處理方式,numeric_only指定是否僅對(duì)數(shù)字列排序,na_option設(shè)置NaN值的排序方法,ascending確定排序方向,pct決定是否以百分比形式展示排名
    2024-09-09
  • Python無權(quán)點(diǎn)文件轉(zhuǎn)化成鄰接矩陣方式

    Python無權(quán)點(diǎn)文件轉(zhuǎn)化成鄰接矩陣方式

    這篇文章主要介紹了Python無權(quán)點(diǎn)文件轉(zhuǎn)化成鄰接矩陣方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Python學(xué)習(xí)筆記之列表推導(dǎo)式實(shí)例分析

    Python學(xué)習(xí)筆記之列表推導(dǎo)式實(shí)例分析

    這篇文章主要介紹了Python學(xué)習(xí)筆記之列表推導(dǎo)式,結(jié)合實(shí)例形式分析Python列表推導(dǎo)式的原理、寫法與相關(guān)使用技巧,需要的朋友可以參考下
    2019-08-08
  • 如何通過Python實(shí)現(xiàn)定時(shí)打卡小程序

    如何通過Python實(shí)現(xiàn)定時(shí)打卡小程序

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)定時(shí)打卡小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Python修改列表值問題解決方案

    Python修改列表值問題解決方案

    這篇文章主要介紹了Python修改列表值問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • python構(gòu)造IP報(bào)文實(shí)例

    python構(gòu)造IP報(bào)文實(shí)例

    這篇文章主要介紹了python構(gòu)造IP報(bào)文實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Python中index()和seek()的用法(詳解)

    Python中index()和seek()的用法(詳解)

    下面小編就為大家?guī)硪黄狿ython中index()和seek()的用法(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-04-04

最新評(píng)論

正阳县| 宜章县| 安远县| 徐水县| 确山县| 富顺县| 福州市| 伊宁市| 宜城市| 兴业县| 东台市| 夏河县| 涿鹿县| 清原| 鄂托克前旗| 万荣县| 昌平区| 盐亭县| 江北区| 嘉善县| 奎屯市| 莱阳市| 天祝| 隆德县| 东乡| 新兴县| 阜新市| 改则县| 忻州市| 温泉县| 津市市| 孟村| 长岛县| 星子县| 明水县| 罗甸县| 清流县| 泸水县| 定兴县| 南岸区| 都兰县|