Python中怎么自定義基本類型

本篇文章為大家展示了Python 中怎么自定義基本類型,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

專注于為中小企業(yè)提供網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)滎陽(yáng)免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了千余家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

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

a = 'abcde' b = a.upper() print(b)

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

我們?cè)趯?xiě)自己的類時(shí),常常會(huì)定義很多的方法。那么,當(dāng)字符串自帶的方法不夠時(shí),我們是否有辦法自定義一些方法呢?

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

我雖然可以單獨(dú)定義一個(gè)類來(lái)做這件事情:

class MyStr:     def __init__(self, value):         self.value = value      def are_you_short(self):         return len(self.value) < 5

運(yùn)行效果如下圖所示:

Python 中怎么自定義基本類型

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

Python 中怎么自定義基本類型

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

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

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

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

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

我們修改一下MyStr的定義:

class MyStr(str):     def are_you_short(self):         return len(self) < 5

運(yùn)行效果如下圖所示:

Python 中怎么自定義基本類型

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

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

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

上述內(nèi)容就是Python 中怎么自定義基本類型,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)頁(yè)標(biāo)題:Python中怎么自定義基本類型
標(biāo)題鏈接:http://bm7419.com/article46/isgpeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、微信公眾號(hào)小程序開(kāi)發(fā)、手機(jī)網(wǎng)站建設(shè)網(wǎng)站策劃、建站公司

廣告

聲明:本網(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í)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化