一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 如何為 Python 基本類型自定義方法?

如何為 Python 基本類型自定義方法?

2020-10-20 23:37未聞Codekingname Python

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

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

如何為 Python 基本類型自定義方法?

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


a = 'abcde' 

b = a.upper() 

print(b) 

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

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

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

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


class MyStr: 

    def __init__(self, value): 

        self.value = value 

 

    def are_you_short(self): 

        return len(self.value) < 5 

運行效果如下圖所示:

如何為 Python 基本類型自定義方法?

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

如何為 Python 基本類型自定義方法?

MyStr對象,不僅打印不出內容,而且還不能通過加號進行拼接。

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

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

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

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

我們修改一下MyStr的定義:


class MyStr(str): 

    def are_you_short(self): 

        return len(self) < 5 

運行效果如下圖所示:

如何為 Python 基本類型自定義方法?

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

大家也可以對 int、float甚至是列表、字典試一試,來實現自己的數據類型。

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 毛片视频网站 | 国产精品国产高清国产专区 | 国产二区精品视频 | 无码人妻精品一区二区蜜桃在线看 | 日本高清在线看 | 美女露尿口 | 99在线观看免费视频 | 91传媒在线观看 | 2021国产麻豆剧传媒剧情动漫 | 继攵催眠女乱h调教 | 成熟女人50岁一级毛片不卡 | 久久久久青草大香线综合精品 | 国产高清视频网站 | 农夫69小说小雨与农村老太 | 国产精品久久现线拍久青草 | 污黄漫| 日本福利视频网站 | 日韩视频免费一区二区三区 | 国产精品成人网红女主播 | 欧美三级小视频 | 美女草b | 国产福利你懂的 | 四虎影视永久在线精品免费 | 四虎在线视频免费观看视频 | 国产精品资源站 | 99视频精品全部 在线 | 色琪琪原网站亚洲香蕉 | 2022最新a精品视频在线观看 | 91亚洲一区二区在线观看不卡 | 夫妻性生活免费在线观看 | 免费理伦片在线观看全网站 | 黑人巨大精品战中国美女 | aⅴ视频在线免播放观看 | 99视频网址| 国产经典一区二区三区蜜芽 | 无限在线观看视频大全免费高清 | vod国产成人精品视频 | 8x8x华人免费 | 热99这里有精品综合久久 | 亚洲日韩精品欧美一区二区 | 国产精品免费拍拍拍 |