日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
如何為 Python 基本類型自定義方法?

 我們知道,字符串str、整型int、浮點數(shù)float是 Python 的三大基本數(shù)據(jù)類型。

創(chuàng)新互聯(lián)建站主營浠水網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶App定制開發(fā),浠水h5小程序定制開發(fā)搭建,浠水網(wǎng)站營銷推廣歡迎浠水等地區(qū)企業(yè)咨詢

我們也知道,在 Python 里面,一切都是對象,而對象一般有方法。所以,大家會看到下面這種寫法:

 
 
 
 
  1. a = 'abcde' 
  2. b = a.upper() 
  3. print(b) 

其中的.upper()就是把字母轉(zhuǎn)成大寫的方法。

我們在寫自己的類時,常常會定義很多的方法。那么,當(dāng)字符串自帶的方法不夠時,我們是否有辦法自定義一些方法呢?

比如說,我想要一個方法叫做.are_you_short(),如果字符串的長度小于5,返回 True,字符串的長度大于等于5,返回 False。

我雖然可以單獨定義一個類來做這件事情:

 
 
 
 
  1. class MyStr: 
  2.     def __init__(self, value): 
  3.         self.value = value 
  4.  
  5.     def are_you_short(self): 
  6.         return len(self.value) < 5 

運行效果如下圖所示:

但問題是,現(xiàn)在根據(jù)MyStr類初始化的對象,它看起來完全不像一個字符串。它只是一個普通的對象了。大家對比一下普通字符串的行為和這個MyStr對象的行為:

MyStr對象,不僅打印不出內(nèi)容,而且還不能通過加號進(jìn)行拼接。

看到這里,可能有同學(xué)會認(rèn)為我要講魔術(shù)方法了。例如給MyStr實現(xiàn).__str__()方法,就能打印出內(nèi)容;實現(xiàn).__add__()方法,就可以實現(xiàn)用加號拼接。

但等等,哪里需要這么麻煩?一般有這種想法的同學(xué),是剛剛學(xué)完 Python 的魔術(shù)方法,覺得什么事情都可以用魔術(shù)方法來解決。

但實際上,要實現(xiàn)字符串的所有方法非常簡單!

東西學(xué)得越多,就越容易把最簡單的知識給忘記了。想想是不是還有一個東西叫做繼承?

我們修改一下MyStr的定義:

 
 
 
 
  1. class MyStr(str): 
  2.     def are_you_short(self): 
  3.         return len(self) < 5 

運行效果如下圖所示:

不需要手動實現(xiàn)任何的魔術(shù)方法,直接就能擁有字符串的全部能力。

大家也可以對 int、float甚至是列表、字典試一試,來實現(xiàn)自己的數(shù)據(jù)類型。

需要注意的是,在繼承 Python 的數(shù)據(jù)類型時不要手動寫出__init__()方法,除非你知道你在干什么。


網(wǎng)站欄目:如何為 Python 基本類型自定義方法?
網(wǎng)站URL:http://m.5511xx.com/article/dpeissd.html