1. 程式人生 > >Python 物件特殊方法:(一)物件建立與銷燬

Python 物件特殊方法:(一)物件建立與銷燬

物件建立與銷燬

Python中已雙下劃線開頭和結尾的方法是特殊方法,分別對應物件的一些特殊行為。看過《參考手冊》對於物件行為與特殊方法的系統解釋,這裡整理一下筆記。
這裡主要介紹python中物件建立、初始化和銷燬等行為對應的特殊方法。

__new__(cls, [, *args [, **kwargs]]) #物件建立行為
__init__(self, [, *args [, **kwargs]]) #物件初始化行為
__del__(self) #物件銷燬行為

__new__()方法

__new__()方法對應例項的建立,需要返回類物件。

__init__()方法

__init__()方法對應物件的初始化,不需要返回。

__del__()方法

物件銷燬時呼叫,用於釋放資源。

總結

__new__()與__init__()區別

有一個明顯的區別是傳參和返回:

__new__()第一個引數是cls, __init__()第一個引數是self,__new__()與__init__()的其他引數必須保持一致;
__new__方法一般需要返回類的物件,__init__沒有返回。

建立與初始化的區別還是很好理解的。《參考》中給出一個例子。

呼叫A(args)建立物件時,會轉換為以下步驟:

 #python
 x = A.__new__(A, args)
 if isinstance(x, A): x.__init__(args)

這個步驟很好的解釋了:如果__new__不返回物件,則__init__不會被呼叫。

__new__()與__del__()使用

__new__()與__del__()方法一般很少需要使用者定義。__new__()方法通常只定義在元類或繼承自不可變型別之一(證書、字串、元組等)的使用者定義物件中。__del__()方法只有存在某種關鍵資源管理問題的情況下才會定義,如釋放鎖定或關閉連線時。

相關推薦

Python 物件特殊方法物件建立銷燬

物件建立與銷燬 Python中已雙下劃線開頭和結尾的方法是特殊方法,分別對應物件的一些特殊行為。看過《參考手冊》對於物件行為與特殊方法的系統解釋,這裡整理一下筆記。 這裡主要介紹python中物件建立、初始化和銷燬等行為對應的特殊方法。 __new_

Python的併發處理並行執行多個互不相干的子程序

這是併發處理中最簡單的一種情況。應用場景當然也很簡單。一般會是這樣:通過傳遞不同的引數,讓同一個函式在同一時間內執行幾種不同的任務,達到多工並行的效果,提升吞吐量。 我們有這樣一個要求:分別往2個檔案中寫入百W級資料,在序列狀態下的指令碼是這樣的: 【code-1】 import time '

python資料視覺化seaborn—— 整體樣式調色盤

很久之前對seaborn有過一些涉及但是沒有深入探究,這次有趁著有資料視覺化的需求,就好好學一學 Seaborn其實是在matplotlib的基礎上進行了更高階的API封裝,從而使得作圖更加容易,在大多數情況下使用seaborn就能做出很具有吸引力的圖,為資料分析提供了很大的便利性。但是

Python入門os部分方法介紹

>>> help(os) Help on module os: NAME os - OS routines for Mac, NT, or Posix depending on what system we’re on.

Java設計模式建立型模式工廠模式簡單工廠模式+工廠方法模式

在面向物件程式設計中, 最通常的方法是一個new操作符產生一個物件例項,new操作符就是用來構造物件例項的。但是在一些情況下, new操作符直接生成物件會帶來一些問題。舉例來說,許多型別物件的建立需要一系列的步驟:你可能需要計算或取得物件的初始位置;選擇生成哪個子物件例項;或在你生成你需要的物件

Python函數語言程式設計高階函式

首先有一個高階函式的知識。 一個函式可以接收另一個函式作為引數,這種函式就稱之為高階函式。 def add(x, y, f): return f(x) + f(y) 當我們呼叫add(-5, 6, abs)時,引數x,y和f分別接收-5,6和abs,根據函式定義,我們可以推導計算過程為:

python來實現機器學習線性迴歸linear regression

需要下載一個data:auto-mpg.data 第一步:顯示資料集圖 import pandas as pd import matplotlib.pyplot as plt columns = ["mpg","cylinders","displacement","horsepowe

Python C/S 網路程式設計之 三種方法實現天氣預報小程式

1. 首先明白下協議棧和庫的概念: 協議棧(Protocol Stack): 是指網路中各層協議的總和,其形象的反映了一個網路中檔案傳輸的過程:由上層協議到底層協議,再由底層協議到上層協議。 庫(Library):主要用來解析要使用的網路通訊協議,包含Python內建標準庫

Python資料分析numpy庫方法簡介

Numpy功能簡介: 1.官網:www.numpy.org 2.特點:(1)高效的多維矩陣/陣列;    (2);複雜的廣播功能    (3):有大量的內建數學統計函式 矩陣(多維陣列): 一維陣列:  ([ 值1,值2,值3]) 維維陣列: ([[1,2,3],[4,5,6]])

卡爾曼濾波器的兩種python實現方法1opencv自帶的cv2.KalmanFilter 2pykalman演算法庫

預備知識: 卡爾曼濾波的理論知識: 具體的理論知識可參考以下博文,非常感謝相關博主的貢獻: 以一個滑鼠追蹤的任務分析兩種卡爾曼濾波的實現方式: (一)opencv自帶的cv2.KalmanFilter 該卡爾曼濾波器演算法分為兩個階段: 預測

統計學習方法筆記K近鄰法的實現kd樹

  實現k近鄰演算法時,首要考慮的問題是如何對訓練資料進行快速的k近鄰搜尋。這點在特徵空間的維數大於訓練資料容量時尤為重要。 構造kd樹   kd 樹是一種對k為空間中的例項點進行儲存的一邊對其進行快速檢索的樹形資料結構。kd樹是二叉樹,表示對k維空間的一個劃分(parti

Python 中的黑暗角落理解 yield 關鍵字

Python 是非常靈活的語言,其中 yield 關鍵字是普遍容易困惑的概念。 此篇將介紹 yield 關鍵字,及其相關的概念。 迭代、可迭代、迭代器 迭代(iteration)與可迭代(iterable) 迭代是一種操作;可迭代是物件的一種特性。 很多資料

Java基礎總結物件,類,屬性,方法

物件,類,屬性,方法的解析: 以人為例。 類:人可以看作一個類。 物件:具體到什麼人(黃種人,白種人,黑種人,中國人等等)這就可以看作是物件,可以根據需求繼續往下區分,比如 男人 女人。 屬性:比如說黃種人的特點:黃面板,黑頭髮,黑眼睛等等,這些就是黃

Opencv3.0-python的那些事兒、Opencv關於如何讀取大量視訊幀進行處理的方法

一個真實的專案需求,需要讀取視訊的幀然後對這些幀做資料處理,因此用的是opencv3.0(python)來做的,熟悉opencv3.0的朋友知道,它提供了VideoCapture方法可以讀取視訊,並生成幀。 剛開始,我是把從視訊中所有的幀全部存在一個數組中,然後處理。後來發

工廠三兄弟之工廠方法模式日誌記錄器的設計

簡單工廠模式雖然簡單,但存在一個很嚴重的問題。當系統中需要引入新產品時,由於靜態工廠方法通過所傳入引數的不同來建立不同的產品,這必定要修改工廠類的原始碼,將違背“開閉原則”,如何實現增加新產品而不影響已有程式碼?工廠方法模式應運而生,本文將介紹第二種工廠模式——

工廠方法模式-Factory Method Pattern 工廠三兄弟之工廠方法模式日誌記錄器的設計

簡單工廠模式雖然簡單,但存在一個很嚴重的問題。當系統中需要引入新產品時,由於靜態工廠方法通過所傳入引數的不同來建立不同的產品,這必定要修改工廠類的原始碼,將違背“開閉原則”,如何實現增加新產品而不影

python的requests類庫requests庫和urllib包對比一個簡單get請求

python中有多種庫可以用來處理http請求,比如python的原生庫:urllib包、requests類庫。urllib和urllib2是相互獨立的模組,python3.0以上把urllib和ur

基本設計模式學習筆記常見的七種面向物件設計原則

0.概述      面向物件設計原則為支援可維護性複用而誕生,這些原則蘊含在很多設計模式中,他們是從許多設計方案中總結出來的指導性原則1.單一原則     一個類只負責一個功能領域中的相應職責,或者說:就一個類而言,應該只有一個引起它變化的原因。個人總結:將不同職責的方法放在

李航-統計學習方法筆記統計學習方法概論

對象 統計學 技術分享 精確 結束 人的 發生 abs 速度 本系列筆記,主要是整理統計學習方法的知識點和代碼實現各個方法,來加強筆者對各個模型的理解,為今年找到好工作來打下基礎。 計劃在一個月內更新完這本書的筆記,在此立一個flag: 從2019/2/17開始 到 20

Python+Selenium - Web自動化測試環境搭建

清單列表:   Python 3x Selenium Chrome Pycharm 一、Python的安裝:   Python官網下載地址:https://www.python.org/   1.