中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

python3中構(gòu)造函數(shù)和析構(gòu)函數(shù)的區(qū)別-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)python3中構(gòu)造函數(shù)和析構(gòu)函數(shù)的區(qū)別,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

成都創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括遼源網(wǎng)站建設(shè)、遼源網(wǎng)站制作、遼源網(wǎng)頁(yè)制作以及遼源網(wǎng)絡(luò)營(yíng)銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,遼源網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到遼源省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

要點(diǎn):

1、魔法方法,被__雙下劃線所包圍

在適當(dāng)?shù)臅r(shí)候自動(dòng)被調(diào)用

2、在創(chuàng)建一個(gè)對(duì)象的時(shí)候,一定會(huì)調(diào)用構(gòu)造函數(shù)

3、 del析構(gòu)函數(shù),在del a對(duì)象的時(shí)候,并一定會(huì)調(diào)用該析構(gòu)函數(shù)

只有當(dāng)該對(duì)象的引用計(jì)數(shù)為0時(shí)才會(huì)調(diào)用析構(gòu)函數(shù),回收資源

析構(gòu)函數(shù)被python的垃圾回收器銷毀的時(shí)候調(diào)用。當(dāng)某一個(gè)對(duì)象沒有被引用時(shí),垃圾回收器自動(dòng)回收資源,調(diào)用析構(gòu)函數(shù)

#coding=utf-8
'''
魔法方法,被__雙下劃線所包圍
在適當(dāng)?shù)臅r(shí)候自動(dòng)被調(diào)用
'''
#構(gòu)造init、析構(gòu)del
class Rectangle:
  def __init__(self,x,y):
    self.x = x
    self.y = y
    print('構(gòu)造')
  '''
  del析構(gòu)函數(shù),并不是在del a對(duì)象的時(shí)候就會(huì)調(diào)用該析構(gòu)函數(shù)
  只有當(dāng)該對(duì)象的引用計(jì)數(shù)為0時(shí)才會(huì)調(diào)用析構(gòu)函數(shù),回收資源
  析構(gòu)函數(shù)被python的垃圾回收器銷毀的時(shí)候調(diào)用。當(dāng)某一個(gè)對(duì)象沒有被引用時(shí),垃圾回收器自動(dòng)回收資源,調(diào)用析構(gòu)函數(shù)
  '''
  def __del__(self):
    print('析構(gòu)')
  def getPeri(self):
    return (self.x + self.y)*2
  def getArea(self):
    return self.x * self.y
if __name__ == '__main__':
  rect = Rectangle(3,4)
  # a = rect.getArea()
  # b = rect.getPeri()
  # print(a,b)
  rect1 = rect
  del rect1
  # del rect
  while 1:
    pass

補(bǔ)充知識(shí):Python 類成員變量使用缺省值初始化時(shí)要注意的一個(gè)坑

Python 類成員變量使用缺省值初始化時(shí)要注意的一個(gè)坑

標(biāo)簽(空格分隔): python2.7 python 3.6

考慮到如下場(chǎng)景:

定義class A,class A 包含成員變量 l 和 d, l為數(shù)組, d 為字典;

在 class A 的構(gòu)造函數(shù)中使用缺省參數(shù)初始化 A 的成員變量 l 和 d ;

具體代碼如下:

class A:
  def __init__(self, l=["name"], d={"key1": "test"}):
    self.l = l
    self.d = d

現(xiàn)在,在主邏輯函數(shù)中定義生成多個(gè) A 的實(shí)例, 構(gòu)造時(shí)使用構(gòu)造函數(shù)的缺省值:

if __name__ == "__main__":
  a1 = A()
  a2 = A()
  print (id(a1.l), id(a1.d))
  print (id(a2.l), id(a2.d))

輸出的結(jié)果如下:

python2.7 
(56305416L, 56376040L) 
(56305416L, 56376040L)

python3.6 
 2036953558112 
 2036953558112

可以看出,使用缺省值初始化的2個(gè) A 的實(shí)例中,對(duì)應(yīng)的成員變量 l 和 d 指向了同一個(gè)地址

現(xiàn)在假設(shè)需要在主邏輯函數(shù)中分別操作實(shí)例a1 和 a2:

if __name__ == "__main__":
  a1 = A()
  a2 = A()
  # print (id(a1.l), id(a1.d))
  # print (id(a2.l), id(a2.d))

  a1.l.extend(["a", "b", "C", "Xa"])
  a1.d["key"] = "value"

  print ("a1", a1.l, a1.d)
  print ("a2", a2.l, a2.d)

輸出結(jié)果會(huì)如下:

a1 ['name', 'a', 'b', 'C', 'Xa'] {'key1': 'test', 'key': 'value'}
a2 ['name', 'a', 'b', 'C', 'Xa'] {'key1': 'test', 'key': 'value'}

只修改a1,但 a2 的成員變量同時(shí)也被改變了!

此問題實(shí)際場(chǎng)景中其中一個(gè)是在使用wxGride時(shí)會(huì)遇到:

class MyGrid(wx.grid.Grid):
  def __init__(self, parent, col_titles=["a", "b", "c"], data=[["1", "2", "3"]]):
    wx.grid.Grid__init__(self, parent=parent)
    self.col_titls = col_titles
    self.data = data
    ...

  def AppendData(self, rows=[], clear=Flase):
    self.data.extend(rows)
    msg = wx.grid.GridTableMessage(self,
                    wx.grid.GRIDTABLE_NOTIFY_ROWS_DELETED,
                    0,
                    len(rows))
    self.ProcessTableMessage(msg)

class MyFrame(wx.Frame):
  def __init(self, parent, title=""):
    wx.Frame.__init__(self, parent=parent, title=title)
    self.grid1 = MyGrid(self)
    self.grid2 = MyGrid(self)
    ...

  def onGridAddCallback(rows, force=False):
    if isinstance(rows, list) and len(rows) > 0:
      self.grid1.AppendData(rows, force)

當(dāng)更新gird1的內(nèi)容時(shí),gird2的成員變量 data 也發(fā)生了改變,因此導(dǎo)致異常

可選的解決方案: 避免使用缺省值初始化指針類型成員變量(list, dict …):

class MyFrame(wx.Frame):
  def __init(self, parent, title=""):
    wx.Frame.__init__(self, parent=parent, title=title)
    self.grid1 = MyGrid(self, col_titles=["a", "b", "c"], data=[["1", "2", "3"]])
    self.grid2 = MyGrid(self, col_titles=["a", "b", "c"], data=[["1", "2", "3"]])
    ...

關(guān)于python3中構(gòu)造函數(shù)和析構(gòu)函數(shù)的區(qū)別就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

文章標(biāo)題:python3中構(gòu)造函數(shù)和析構(gòu)函數(shù)的區(qū)別-創(chuàng)新互聯(lián)
標(biāo)題URL:http://m.2m8n56k.cn/article48/cegoep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作微信公眾號(hào)App開發(fā)標(biāo)簽優(yōu)化Google用戶體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
主站蜘蛛池模板: 日本三级欧美三级人妇英文 | 日本天堂网 | 久久se精品一区精品二区 | 国产精品国产 | 亚洲一级香蕉视频 | 国产精品欧美视频另类专区 | 日本成人在线免费 | 韩国免费毛片 | 性欧美在线 | 国产高清免费 | 一级欧美日韩 | 国产在线欧美日韩一区二区 | 欧美日韩国产一区三区 | 色爽爽爽爽爽爽爽爽 | 国产成综合 | 国产精品久久久久a影院 | 手机看片自拍日韩日韩高清 | 高清欧美一级在线观看 | 久久久久国产精品 | 黄网在线视频 | 亚洲国产成人久久综合碰 | 真人真实毛片免费观看 | 国产精品视频999 | 欧美在线高清 | 美国成人免费视频 | 国产成人精品高清不卡在线 | 成年女人毛片免费视频 | 国产成人一区二区三区高清 | 精品久久香蕉国产线看观看亚洲 | 成人高清在线观看播放 | 欧美特黄一级高清免费的香蕉 | 成年人网站在线观看免费 | 台湾香港澳门三级在线 | 欧美精品久久天天躁 | 性感一级毛片 | 欧美亚洲精品在线 | 黄色美女网站视频 | 国产欧美在线不卡 | 国产亚洲精品久久 | 精品视频一区二区三区免费 | 国产精品手机在线观看 |