本文討論python中將某個複雜物件轉換為簡單物件或資料型別的常用魔術放啊,這些在程式設計中是十分有用的。
1、__str__方法。
在講解本方法前我們先開啟乙個jupyter notebook,隨意建立乙個類如下,使用str()方法輸出該類的例項看看返回了什麼:
class barchart(object):
def __init__(self, x, y, labels,color):
self.x = x
self.y = y
self.labels = labels
self.color = color
def showwww.cppcns.com(self):
pass
str(barchart(x=[1,2,3,], y=[10,30,20],labels=['1','2','3']))
out[1]:『
日常開發中,多數情況下,形如這樣的輸出對我們沒有任何作用。然而在python中卻常用str()方法進行強制型別轉換,我們希望將某個物件轉換成字串後是某一定的意義的,這就需要用到魔術方www.cppcns.com法__str__。__str__方法在物件傳遞給str的建構函式時被呼叫;該方法接受乙個位置引數(self),具體請看下例:
class barchart(object):
def __init__(self, x, y, labels, color):
self.x = x
self.y = y
self.labels = labels
self.color = color
def show(self):
pass
def __str__(self):
return '我是乙個bar圖,我的顏色值為:'+self.color
str(barchart(x=[1,2,3,], y=[10,30,20],labels=['1ielwqu','2','3'],color='red'))
out[2]:『我是乙個bar圖,我的顏色值為:red'
2.__unicode__方法和__bytes__方法
python2中的字串是ascii字串,而python3中採用的是unicode字串,並且python3還引入了bytes(bytestring)型別。不同的字串家族擁有自己的魔術方法:
3.__bool__方法
其實道理也是類似的,__bool__在物件傳遞給bool的建構函式時被呼叫。但是在python2和python3中對於該方法的命名不一樣:
不過,兩者的功能是一致的,它們都接受乙個位置引數(self)並返回乙個bool值,即true或false。
4.__int__、__float__和__complex__方法
如果乙個物件定義了乙個返回int型別的__int__方法,那麼該物件被傳遞給int的建構函式時,int程式設計客棧方法會被呼叫。類似地,若物件定義了__float__方法和__complex__方法 ,也會在各自傳遞給float或complex的建構函式時被呼叫。另外,python2中擁有long型別(而python3中不再擁有),程式設計客棧因此在python2中相應地有__long__方法。
python 魔術方法
魔術方法 呼叫方式 解釋 new cls instance myclass arg1,arg2 new 在建立例項的時候被呼叫 init self instance myclass arg1,arg2 init 在建立例項的時候被呼叫 cmp self,other self other,self o...
Python魔術方法
參考文章 python 魔術方法指南 魔術方法,顧名思義是一種可以給物件 類 增加魔法的特殊方法,它們的表示方法一般是用雙下劃線包圍 如 init from os.path import join class fileobject 給檔案物件進行包裝從而確認在刪除時檔案流關閉 def init se...
Python 魔術方法
usr bin env python coding utf 8 author ray time 2018 12 6 魔術方法例項 init 建構函式,在生成物件時呼叫,用來初始化值 del 析構函式,釋放物件時使用 比如編輯檔案,把關閉檔案的操作寫在此方法中,程式結束時就會關閉軟體 str 使用pr...