目录

  • str
  • repr
  • \_\_str__
  • \_\_repr__

str

  • 是内置模块定义的类,用于从给定对象创建一个新的字符串对象,即适于人阅读的形式
  • 如果给定参数encoding或errors,则对象必须公开一个将使用给定编码或错误处理程序进行解码的数据缓存区。即处理bytes类型或缓存时,需要使用指定编码或错误处理器来进行解码
  • 除此之外,如果给定对象已定义__str__方法,将返回给定对象的__str__(),否则返回repr(给定对象)
    class str(object):"""str(object='') -> strstr(bytes_or_buffer[, encoding[, errors]]) -> strCreate a new string object from the given object. If encoding orerrors is specified, then the object must expose a data bufferthat will be decoded using the given encoding and error handler.Otherwise, returns the result of object.__str__() (if defined)or repr(object).encoding defaults to sys.getdefaultencoding().errors defaults to 'strict'."""
    

repr

  • 是内置模块定义的函数,返回对象的规范字符串表现形式,即供解释器读取的形式;对于许多对象类型,生成的字符串满足调用eval函数生成值相等的对象

    def repr(obj): # real signature unknown; restored from __doc__"""Return the canonical string representation of the object.For many object types, including most builtins, eval(repr(obj)) == obj."""
    
    >>> s = '0 + 1'
    >>> repr(s)
    "'0 + 1'"
    >>> eval(repr(s)) == s
    True
    
  • 对于处理未定义__repr__函数的类实例,则返回被定义模块、所属类、内存地址,例如:<__main__.Pear object at 0x7f9bc823b370>

    >>> class Pear:def __init__(self, color):self.color = color>>> p = Pear('yellowish-white')
    >>> repr(p)
    '<__main__.Pear object at 0x7f9bc823b370>'
    
  • 对于处理定义__repr__函数的类实例,则返回该魔术方法的处理结果

    class Pear:def __init__(self, color):self.color = colordef __repr__(self):return 'repr: Pear(%s)' % self.color
    
    >>> from 内置函数相关.str与repr区别 import Pear
    >>> p = Pear('yellowish-white')
    >>> repr(p)
    'repr: Pear(yellowish-white)'
    
  • str与repr区别,str返回适于人阅读的形式,面向用户,侧重可读性;repr返回供解释器读取的形式,面向解释器或开发者,侧重准确性,比如将repr返回内容复制并定义与对应变量值相等的新变量,用于debug

    >>> s = '0 + 1'
    >>> str(s)
    '0 + 1'
    >>> repr(s)
    "'0 + 1'"
    

__str__

  • 是类中定义的魔术方法,对对象进行字符串处理,返回适于人阅读的形式。当str()、print()、%s、f’{}'和logging打印日志时,会调用该方法

    class Orange:def __init__(self, color):self.color = colordef __str__(self):return 'str: Orange(%s)' % self.color
    
    >>> from 内置函数相关.str与repr区别 import Orange
    >>> o = Orange('yellow')
    >>> str(o)
    'str: Orange(yellow)'
    >>> print(o)
    str: Orange(yellow)
    >>> '%s'%o
    'str: Orange(yellow)'
    >>> f'the color of orange is {o}'
    'the color of orange is str: Orange(yellow)'
    
  • 当调用该魔术方法时,若子类未定义则会向父类寻找(除object类外);若父类未定义则会从子类到父类依次寻找__repr__方法(除object类外);若未找到则调用object类的__str__方法
    class Plants:def __init__(self, name):self.name = namedef __str__(self):return 'Plants(%s)' % self.nameclass Fruits(Plants):def __init__(self, name):super(Fruits, self).__init__(name)def __repr__(self):return 'repr: Fruits(%s)' % self.name
    
    >>> from 内置函数相关.str与repr区别 import Fruits
    >>> f = Fruits('banana')
    >>> str(f)
    Plants(banana)
    

__repr__

  • 类中定义的魔术方法,用于在交互模式下提示回应,或者当repr函数处理对象时被调用,返回供解释器读取的形式

    class Apple:def __init__(self, color):self.color = colordef __str__(self):return 'str: Apple(%s)' % self.colordef __repr__(self):return 'repr: Apple(%s)' % self.color
    
    >>> from str与repr区别 import Apple
    >>> a = Apple('red')
    >>> a
    repr: Apple(red)
    >>> repr(a)
    'repr: Apple(red)'
    

str与__str__、repr与__repr__的关系相关推荐

  1. python中的str方法和repr方法_Python中 的 __str__ 方法和 __repr__ 方法的区别有哪些

    Python中 的 __str__ 方法和 __repr__ 方法的区别有哪些 发布时间:2020-11-05 17:11:48 来源:亿速云 阅读:95 作者:Leah 本篇文章给大家分享的是有关P ...

  2. python中的str方法和repr方法_详解Python中__str__和__repr__方法的区别

    对我当前工程进行全部测试需要花费不少时间.既然有 26 GB 空闲内存,为何不让其发挥余热呢? tmpfs 可以通过把文件系统保存在大内存中来加速测试的执行效率. 但优点也是缺点,tmpfs 只把结果 ...

  3. Python中的str()函数和repr()函数

    在 Python 中要将某一类型的变量或者常量转换为字符串对象通常有两种方法,即str() 或者 repr() . >>> a = 10 >>> type(str( ...

  4. python中 str 和 repr_python repr()与str()区别总结

    python中,用于将某一类型的变量或者常量转换为字符串对象的方法有两种,即repr()和str().但是他们在定义.面向对象.返回处理方式.字符串处理和输出目的都有很大的不同,本文将做详细介绍. 1 ...

  5. str函数和repr函数的区别

    2019独角兽企业重金招聘Python工程师标准>>> str()一般是将数值转成字符串. repr()是将一个对象转成字符串显示,注意只是显示用,有些对象转成字符串没有直接的意思. ...

  6. 跨数据库所有权链接_为什么“数据所有权”不是隐私

    跨数据库所有权链接 It's no secret data privacy is the topic du jour in regulatory and press circles. Heighten ...

  7. 丝绒绳的价值:炒​​作和排他性对发射策略的影响

    重点 (Top highlight) By Gaby Goldberg & Jordan Odinsky 盖比·戈德堡和乔丹·奥丁斯基 None of us are new to the id ...

  8. 单纯形法和对偶单纯形法

    前言 我在学习这个知识点的时候,花了不少时间,苦于网上的教程要么和老师描述的方法不一致(当然应该也可以),要么不全,所以当时在做作业题的时候,花了不少时间(>10hours).因此想写一篇博文来 ...

  9. python中str函数_一文让你彻底搞懂Python中__str__和__repr__?

    __str__和__repr__的异同? 字符串的表示形式 我们都知道,Python的内置函数repr()能够把对象用字符串的形式表达出来,方便我们辨认.这就是"字符串表示形式". ...

最新文章

  1. 规范的 Commit Message
  2. CSS中background-position属性
  3. C# MD5加密工具方法
  4. 4-10 :selected选中状态选择器
  5. 性能测试、负载测试以及压力测试
  6. Python 函数缓存 (Function caching)
  7. 使用JAXB将XML Schema绑定到Java类
  8. 常见input输入框 点击 发光白色外阴影 focus
  9. Microsoft Visual Studio 2010安装教程
  10. 【原】小软件开发心得(二)——推广、测试
  11. 能量谱 matlab,频谱、幅度谱、功率谱和能量谱含义
  12. 安全攻防技能——身份认证
  13. seaborn做图技巧
  14. 如何查看主机的网卡MAC地址及含义
  15. 数据分析出的 2000年以来高分华语电影前50名
  16. EXCEL如何设置,使表格能自动调整列宽以适应文字长度
  17. 使用云空间存储游戏素材
  18. 音频微商精准引流技巧有哪些?如何从音频平台吸引粉丝?
  19. 4k显示器用html好还是dp,专家解密!七点告诉你4K显示器和4K电视最大区别!
  20. 计算机专业开学周记,周记开学第一周

热门文章

  1. JZOJ 2018.07.15【2018提高组】模拟C组
  2. leaflet的引入
  3. 为的是看看路上的风景
  4. 20个计算机英语关键词,英语微课堂:20个专业体育英语术语,秒懂赛场关键词!...
  5. UVA12627:Erratic Expansion(奇怪的气球膨胀)
  6. ubuntu安装输入法----小企鹅输入法
  7. 语言学中不同视角的抽象与具体——谈索绪尔、乔姆斯基、韩礼德的语言观
  8. 基于python的网络爬虫编程_基于Python的网络爬虫程序设计
  9. 【12个降维技术的终极指南(使用Python代码)】
  10. latex subfigure重新编号