亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

景谷| 新兴县| 威信县| 普兰店市| 新竹市| 湛江市| 乌审旗| 长海县| 眉山市| 屏东县| 黑山县| 黄冈市| 长宁县| 红河县| 扶风县| 阜城县| 体育| 井陉县| 兰坪| 华池县| 九龙坡区| 洛隆县| 定日县| 蒲江县| 岳阳市| 新宁县| 白山市| 武威市| 当涂县| 西贡区| 德州市| 尉犁县| 宜黄县| 新源县| 盘山县| 盐津县| 苏尼特左旗| 鲜城| 沛县| 井研县| 炉霍县|