真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

使用python怎么實(shí)現(xiàn)一個(gè)子類調(diào)用父類的構(gòu)造函數(shù)-創(chuàng)新互聯(lián)

使用python怎么實(shí)現(xiàn)一個(gè)子類調(diào)用父類的構(gòu)造函數(shù)?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司是一家服務(wù)多年做網(wǎng)站建設(shè)策劃設(shè)計(jì)制作的公司,為廣大用戶提供了網(wǎng)站制作、成都做網(wǎng)站,成都網(wǎng)站設(shè)計(jì),1元廣告,成都做網(wǎng)站選創(chuàng)新互聯(lián),貼合企業(yè)需求,高性價(jià)比,滿足客戶不同層次的需求一站式服務(wù)歡迎致電。

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

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

使用python怎么實(shí)現(xiàn)一個(gè)子類調(diào)用父類的構(gòu)造函數(shù)

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

使用python怎么實(shí)現(xiàn)一個(gè)子類調(diào)用父類的構(gòu)造函數(shù)

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

使用python怎么實(shí)現(xiàn)一個(gè)子類調(diào)用父類的構(gòu)造函數(shù)

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

如果沒(méi)有重寫(xiě)子類的構(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)

使用python怎么實(shí)現(xiàn)一個(gè)子類調(diào)用父類的構(gòu)造函數(shù)

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

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

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

發(fā)現(xiàn)了很多不同的地方.我這里簡(jiǎn)單說(shuō)明了,構(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)

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。


網(wǎng)站題目:使用python怎么實(shí)現(xiàn)一個(gè)子類調(diào)用父類的構(gòu)造函數(shù)-創(chuàng)新互聯(lián)
分享鏈接:http://weahome.cn/article/djdpej.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部