Python中str()与__str__、repr()与__repr__区别…
2018-06-18 00:25:52来源:未知 阅读 ()
str()与__str__、repr()与__repr__ 的区别:
str()与repr()都是python中的内置函数,是直接用来格式化字符串的函数。
__str__与__repr__ 是在类(对象)中对类(对象)本身进行字符串处理。
str
1 >>>help(str) 2 Help on class str in module builtins: 3 4 class str(object) 5 | str(object='') -> str 6 | str(bytes_or_buffer[, encoding[, errors]]) -> str 7 | 8 | Create a new string object from the given object. If encoding or 9 | errors is specified, then the object must expose a data buffer 10 | that will be decoded using the given encoding and error handler. 11 | Otherwise, returns the result of object.__str__() (if defined) 12 | or repr(object). 13 | encoding defaults to sys.getdefaultencoding(). 14 | errors defaults to 'strict'.
从给定对象创建一个新字符串对象。
如果指定了编码或错误,则对象必须公开一个将使用给定的编码和错误处理程序进行解码的数据缓冲区。
否则,返回对象的结果。
__str__()(如果定义)或代表(对象)。默认getdefaultencoding()编码系统。错误默认为“严格”。
repr
1 >>>help(repr) 2 3 Help on built-in function repr in module builtins: 4 5 repr(obj, /) 6 Return the canonical string representation of the object. 7 8 For many object types, including most builtins, eval(repr(obj)) == obj.
首先,尝试生成这样一个字符串,将其传给 eval()可重新生成同样的对象
否则,生成用尖括号包住的字符串,包含类型名和额外的信息(比如地址)
eval
1 >>>help(eval) 2 3 Help on built-in function eval in module builtins: 4 5 eval(source, globals=None, locals=None, /) 6 Evaluate the given source in the context of globals and locals. 7 8 The source may be a string representing a Python expression 9 or a code object as returned by compile(). 10 The globals must be a dictionary and locals can be any mapping, 11 defaulting to the current globals and locals. 12 If only globals is given, locals defaults to it.
代码如下:
1 >>> eval('1+2') 2 3 3 >>> str('1+2') 4 '1+2' 5 >>> repr('1+2') 6 "'1+2'" 7 >>> type(repr('1+2')) 8 <class 'str'> 9 >>> type(str('1+2')) 10 <class 'str'> 11 >>> type(eval('1+2')) 12 <class 'int'> 13 #就相当于上面说的eval(repr(object)) == object 14 >>> eval(repr('1+2')) 15 '1+2' 16 >>> '1+2' 17 '1+2'
实例:
Python 定义了__str__()和__repr__()两种方法,__str__()用于显示给用户,而__repr__()用于显示给开发人员。
1 class Person(object): 2 def __init__(self, name, sex): 3 self.name = name 4 self.sex = sex 5 def __str__(self): 6 return '(Person: %s, %s)' % (self.name, self.sex) 7 8 class Student(Person): 9 def __init__(self, name, sex, score): 10 Person.__init__(self, name, sex) 11 self.score = score 12 def __str__(self): 13 return '(Student: %s, %s, %s)' % (self.name, self.sex, self.score) 14 def __repr__(self): 15 return '(Student: %s, %s, %s)' % (self.name, self.sex, self.score)
1 >>> from demo import Person, Student 2 >>> p = Person('Alice', 'Female') 3 >>> p 4 <demo.Person object at 0x103eac0b8> 5 >>> print (p) 6 (Person: Alice, Female) 7 >>> s = Student('Tom', 'male', 20) 8 >>> s 9 (Student: Tom, male, 20) 10 >>> print (s) 11 (Student: Tom, male, 20)
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash