「大數據」(一百一十五)Python基礎之常用魔法函數

【導讀:數據是二十一世紀的石油,蘊含巨大價值,這是·情報通·大數據技術系列第[115]篇文章,歡迎閱讀收藏】

1、__init__():

所有類的超類object,有一個默認包含pass的__init__()實現,這個函數會在對象初始化的時候調用,我們可以選擇實現,也可以選擇不實現,一般建議是實現的,不實現對象屬性就不會被初始化,雖然我們仍然可以對其進行賦值,但是它已經成了隱式的了,編程時顯式遠比隱式的更好。

2、__str__():

直接打印對象的實現方法,__str__是被print函數調用的,一般都是return一個什麼東西,這個東西應該是以字符串的形式表現的。如果不是要用str()函數轉換,我們可以直接print的對象都是實現了__str__這個方法的,比如dict。

「大數據」(一百一十五)Python基礎之常用魔法函數

3、__new__():

在object類中存在一個靜態的__new__(cls, *args, **kwargs)方法,該方法需要傳遞一個參數cls,cls表示需要實例化的類,此參數在實例化時由Python解釋器自動提供,__new__方法必須有返回值,且返回的是被實例化的實例,只有在該實例返回後才會調用__init__來進行初始化,初始化所用的實例就是__new__返回的結果,也就可以認為是self。

4、__unicode__():

__unicode__()方法是在一個對象上調用unicode()時被調用的。因為Django的數據庫後端會返回Unicode字符串給model屬性,所以我們通常會給自己的model寫一個__unicode__()方法。如果定義了__unicode__()方法但是沒有定義__str__()方法,Django會自動提供一個__str__()方法調用 __unicode__()方法,然後把結果轉換為UTF-8編碼的字符串對象,所以在一般情況下,只定義__unicode__()方法,讓 Django來處理字符串對象的轉換。

5、__call__():

對象通過提供__call__()方法可以模擬函數的行為,如果一個對象提供了該方法,就可以像函數一樣使用它。

6、__len__():

len調用後會調用對象的__len__函數,我們可以為其定製輸出,返回長度。

7、__repr__():

函數str() 用於將值轉化為適於人閱讀的形式,而repr() 轉化為供解釋器讀取的形式,某對象沒有適於人閱讀的解釋形式的話,str() 會返回與repr(),所以print展示的都是str的格式。


分享到:


相關文章: