python特殊函数__str__、__repr__和__len__
生活随笔
收集整理的這篇文章主要介紹了
python特殊函数__str__、__repr__和__len__
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.__str__
首先介紹__str__
class Students(object):def __init__(self, *args):self.names = args# def __str__(self): # return str(self.names) # __repr__ = __str__ ss = Students('hyq','ysy') ss>>><__main__.Students at 0x2075a779828>
打印類對象顯示的是對象的內存地址,下面重構__repr__和__str__方法
再看:
class Students(object):def __init__(self, *args):self.names = argsdef __str__(self):return str(self.names) # def __repr__(self): # return str(self.names) ss = Students('hyq','ysy') ss>>><__main__.Students at 0x2075a78a860> class Students(object):def __init__(self, *args):self.names = args# def __str__(self): # return str(self.names)def __repr__(self):return str(self.names) ss = Students('hyq','ysy') ss>>>('hyq', 'ysy')
可以看到,重構__repr__方法后,直接輸出對象,能夠按照__repr__中定義的格式進行顯示;
而重構__str__方法后,直接輸出對象,顯示的是對象的內存地址,并不是__str__定義的格式
當然,用print都能夠顯示__repr__和__str__定義的格式
class Students(object):def __init__(self, *args):self.names = args# def __str__(self): # return str(self.names)def __repr__(self):return str(self.names) ss = Students('hyq','ysy') print(ss)>>>('hyq','ysy')————————————————————————————————————————————分割線———————————————————————————————————— class Students(object):def __init__(self, *args):self.names = argsdef __str__(self):return str(self.names) # def __repr__(self): # return str(self.names) ss = Students('hyq','ysy') print(ss)>>>('hyq','ysy')
注意:
在代碼中一般寫成:
def __str__(self):return str(self.names) __repr__ = __str__2.__len__
如果一個類表現得像一個list,要獲取有多少元素,就得用len()函數
要讓len()函數正常工作,類必須提供一個特殊方法__len__(),返回元素的個數
class Students(object):def __init__(self, *args):self.names = argsdef __len__(self):return len(self.names)ss = Students('hyq','ysy') print(len(ss)>>>2?
轉載于:https://www.cnblogs.com/yqpy/p/9286047.html
總結
以上是生活随笔為你收集整理的python特殊函数__str__、__repr__和__len__的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 李杰:一加Ace 2 Pro性能不会有任
- 下一篇: python全栈-Day 1