91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python的call、len、str、repr怎么使用

發布時間:2021-11-25 09:15:48 來源:億速云 閱讀:184 作者:iii 欄目:互聯網科技

這篇文章主要講解了“python的call、len、str、repr怎么使用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“python的call、len、str、repr怎么使用”吧!

__call__方法

說明

讓一個類的實例變成可執行的。

案例

class Cat:'''貓類'''def __init__(self, name):self.name = name
        self.count = 0def eat(self):print(f'{self.name}正在進食!')def __call__(self, *args, **kwds) -> int:for i in args:self.count += 1print(f'{self.name}抓到了{i},已抓到了{self.count}只獵物')return self.count


white_cat = Cat('大白貓')white_cat('麻雀', '老鼠')out:大白貓抓到了麻雀,已抓到了1只獵物
大白貓抓到了老鼠,已抓到了2只獵物

white_cat(‘麻雀’, ‘老鼠’)效果完全等價于white_cat.__call__(‘麻雀’, ‘老鼠’)。實際上就是解釋器做了個約定:實例后面()時實際就是調用該實例的__call__方法。

假如你定義的類的綁定方法只有一個(或某個方法使用頻率非常高),那么可以把那個方法名寫成__call__,這樣后續使用時會方便很多,可以直接用實例名()來執行。

__len__方法

說明

對實例執行len()時實際就是調用它的__len__方法。

案例

class Cat:'''貓類'''def __init__(self, name):self.name = name
        self.preys = []def __len__(self):return len(self.preys)def eat(self):print(f'{self.name}正在進食!')def __call__(self, *args, **kwargs):self.preys.extend(args)for i in args:print(f'{self.name}抓到了{i}')print(f'{self.name}抓到了{len(self)}只獵物!')white_cat = Cat('大白貓')white_cat('小麻雀', '小老鼠')white_cat('大麻雀', '大老鼠')white_cat('小貓魚', '大青魚')out:大白貓抓到了小麻雀
大白貓抓到了小老鼠
大白貓抓到了2只獵物!
大白貓抓到了大麻雀
大白貓抓到了大老鼠
大白貓抓到了4只獵物!
大白貓抓到了小貓魚
大白貓抓到了大青魚
大白貓抓到了6只獵物!

在這個案例中對之前的代碼做了優化,現在的大白貓還能記住它抓到的所有獵物,當你len(white_cat)就可以知道大白貓抓到了幾只獵物。

對一個實例使用len()時,實際上就是在調用這個實例的__len__方法。

__str__方法和__repr__方法

說明

可以自定義打印實例時字符串的內容。

案例

class Cat:'''貓類'''def __init__(self, name):self.name = name
        self.preys = []def __len__(self):return len(self.preys)def eat(self):print(f'{self.name}正在進食!')def __call__(self, *args, **kwargs):self.preys.extend(args)for i in args:print(f'{self.name}抓到了{i}')print(f'{self.name}抓到了{len(self)}只獵物!')def __repr__(self):return f'啊,{self.name}抓住了“{",".join(self.preys)}”這些獵物。'def __str__(self):return f'哇,{self.name}抓住了“{",".join(self.preys)}”這些獵物。'white_cat = Cat('大白貓')white_cat('小麻雀', '小老鼠')white_cat('大麻雀', '大老鼠')white_cat('小貓魚', '大青魚')print(white_cat)out:大白貓抓到了小麻雀
大白貓抓到了小老鼠
大白貓抓到了2只獵物!
大白貓抓到了大麻雀
大白貓抓到了大老鼠
大白貓抓到了4只獵物!
大白貓抓到了小貓魚
大白貓抓到了大青魚
大白貓抓到了6只獵物!
哇,大白貓抓住了“小麻雀,小老鼠,大麻雀,大老鼠,小貓魚,大青魚”這些獵物。

打印實例時會先調用__str__方法,沒有__str__方法時會調用__repr__方法,兩者都沒有時打印的是類似這樣的:“<main.Cat object at 0x00000299EE6C45E0>”。

__str__方法和__repr__方法的區別

  • print()時會先調用__str__方法,沒有__str__方法時才調用__repr__方法。

  • 在交互模式下直接輸入實例回車時顯示的是__repr__方法返回的內容。

str函數和repr函數的區別

當參數是字符串數據類型時它們返回的內容不完全一致,其他的數據類型返回的內容完全一致。

test1 = 123ret1 = str(test1)ret2 = repr(test1)print(ret1, ret2, ret1 == ret2)test1 = '123'ret1 = str(test1)ret2 = repr(test1)print(ret1, ret2, ret1 == ret2)out:123 123 True123 '123' False

注意:對字符串數據進行repr后得到的內容會多一對單引號,長度會加2;對字符串數據進行str后得到的內容和原來一樣。

感謝各位的閱讀,以上就是“python的call、len、str、repr怎么使用”的內容了,經過本文的學習后,相信大家對python的call、len、str、repr怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阳谷县| 梁平县| 象山县| 沐川县| 汾阳市| 阿尔山市| 昌邑市| 米泉市| 泽州县| 襄樊市| 开封市| 长子县| 洪雅县| 万载县| 若羌县| 含山县| 宁晋县| 洞口县| 灵石县| 敖汉旗| 修水县| 桐梓县| 扎囊县| 乳源| 寿阳县| 金门县| 灵川县| 苍溪县| 龙陵县| 临沧市| 织金县| 玉溪市| 马龙县| 全南县| 东台市| 永吉县| 同心县| 民乐县| 烟台市| 北辰区| 中卫市|