中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

子长县| 贵港市| 桐梓县| 堆龙德庆县| 当阳市| 莆田市| 平原县| 汾西县| 商丘市| 莒南县| 岑溪市| 卢湾区| 上高县| 石狮市| 永昌县| 隆化县| 当阳市| 鲁甸县| 乡宁县| 延津县| 防城港市| 井陉县| 商河县| 辛集市| 喀喇沁旗| 普定县| 衡阳县| 福泉市| 双流县| 易门县| 冷水江市| 马龙县| 昌邑市| 汝阳县| 尤溪县| 扶余县| 新沂市| 白朗县| 蓝山县| 右玉县| 余庆县|