首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python 魔法方法之 __str__ __repr__

    前言 在Pyhton 中,如果想定制化打印出实例对象的信息,那可以使用__str____repr__魔法方法来定制化显示。...__str____repr__ 在Python中,打印一个自定义类的实例对象所显示的信息往往是很不友好的,如下所示: >>> class Animal(): ......____repr__ 所起的作用就是定制化显示输出信息(你想输出什么就是什么),当然,两者也有区别的,区别如下: •对于printstr内置函数,程序会首先尝试__str__,如果没有__str__...•在交互式回应,repr函数中__repr__会被调用,你可以这么认为,__str__ 是给用户看的,__repr__则是给开发者看的....kitty' >>> repr(dog) 'Animal:name is kitty' 从上面示例可以看出 print str函数中调用的是 __str__, 而在交互式响应中 repr函数中调用的是

    48930

    Python中__str____repr__方法的区别

    在stackoverflow有一个很精辟的回答解释这两个内置方法的区别,简单来说,__str__方法是表现给使用者使用的,而__repr__方法是给程序员用的。...return '__str__' def __repr__(self): return '__repr__' my_book=book() print(my_book) __...str__ my_book Out[13]: __repr__ 我们可以简单的看出print方法调用的是__str__,因为这是展现给使用者的,而直接在python的解释器,返回的是__repr__方法...import datetime today=datetime.date.today() str(today) Out[16]: '2018-02-15' repr(today) Out[17]: 'datetime.date...(2018, 2, 15)' 管中窥豹,str(today)返回的是2018-02-15,我们可以看出来具体的时间,而repr(today)返回的是datetime.date这个方法,显然我们可以直接使用这个方法实例化

    39720

    python笔记70 - Python中__repr____str__区别

    前言 Python中__repr____str__使用区别 __repr__ 使用 很多时候我们在创建一个类的时候,在终端打印类的实例,看到的是一个类似于这样的内容:<XXX object at 0x0000000001222E10...__返回的内容 总结 注意:__str__()方法__repr__()方法的返回值只能是字符串!...__repr____str__这两个方法都是用于显示的,__str__是面向用户的,而__repr__面向开发者 关于调用两种方法的时机 使用print()时 使用%sf’{}’拼接对象时 使用str...特别地,对于下面两种场景: 用%r进行字符串拼接时 用repr(x)转换对象x时 则会调用这个对象的__repr__()方法;若没有,则不再看其是否有__str__()方法,而是显示其内存地址。...当我们想在不同环境下支持不同的显示,例如终端用户显示使用__str__,而程序员在开发期间则使用底层的__repr__来显示,实际上__str__只是覆盖了__repr__以得到更友好的用户显示。

    36440

    测开之《__repr____str__方法的使用》

    文章总览图 使用str函数或者print打印对象时会优先触发str方法,没定义str方法的情况下,会再去找repr方法,如果都没有,那么就会去找父类的str方法。...在交互环境下输入对象直接通过repr这个内置函数处理对象的时候,它只会触发repr方法,如果repr方法不存在,会找父类的repr方法,不会去找str方法。 repr方法是str方法的备胎。...但是repr方法不能拿str方法做备胎。父类是第二轮备胎。 一、__str__方法 通过print打印的时候,str被触发了。通过str函数调用的时候,str也被触发了。...(m) # str(m) # format(m) res=repr(m) print(res) 如果str方法不存在,会去触发repr方法,打印出repr方法的内容: 三、什么使用str方法,什么时候用...res=repr(m) print(res) strrepr方法都是返回字符串。

    42130

    一文让你彻底搞懂`__str__``__repr__`?

    __repr__ 接下来我们看一看__str____repr__有哪些异同。...根据Python官方文档定义: __str__:通过str(object)以及内置函数format()print()调用以生成一个对象的“非正式”或格式良好的字符串表示。返回值必须是字符串对象。...(y) 'pythonic' >>> z = '4' >>> repr(z) "'4'" >>> str(z) # 注意,此处的输出结果形式跟str(x)一样,但xz的类型并不一样 '4' >>>...str(x) == str(z) True >>> repr(x) == repr(z) False >>> str(4) == str("4") True >>> repr(4) == repr("...4") False 当x=4,当x为整数类型时,调用str()repr()的返回结果是一样, 而当y为字符串类型时,repr(y)的结果就是“正式”的字符串表示,而str(y)的结果则是“非正式”的。

    1.5K30

    Python面向对象编程-魔术方法-__str____repr__方法

    其中,__str____repr__方法是最常用的魔术方法之一。这两个方法都是用于打印对象时的字符串表示形式,但它们的作用略有不同。...下面是一个简单的例子,演示了如何使用__str____repr__方法:class MyClass: def __init__(self, name, age): self.name...# 使用__str__方法打印对象的可读性更好的表示形式print(obj) # 输出: Alice is 25 years old.# 使用__repr__方法打印对象的字符串表示形式print(repr...接着,我们实现了__str____repr__方法。在__str__方法中,我们返回了一个字符串,描述了该对象的可读性更好的表示形式。...最后,我们创建了一个MyClass对象obj,并使用print语句repr函数分别打印了它的可读性更好的表示形式字符串表示形式。

    23130

    Python面试题之Python中__repr____str__区别

    上面打印类对象并不是很友好,显示的是对象的内存地址 # 下面我们重构下该类的__repr__以及__str__,看看它们俩有啥区别 # 重构__repr__ class TestRepr(Test):...# 你会发现,直接输出对象ts时并没有按我们__str__方法中定义的格式进行输出,而用print输出的信息却改变了 __repr____str__这两个方法都是用于显示的,__str__是面向用户的...打印操作会首先尝试__str__str内置函数(print运行的内部等价形式),它通常应该返回一个友好的显示。...__repr__用于所有其他的环境中:用于交互模式下提示回应以及repr函数,如果没有使用__str__,会使用printstr。...当我们想所有环境下都统一显示的话,可以重构__repr__方法;当我们想在不同环境下支持不同的显示,例如终端用户显示使用__str__,而程序员在开发期间则使用底层的__repr__来显示,实际上__str

    42920

    (三十一) 初遇python之str() vs repr()

    各位读者大大们大家好,今天学习str() 与 repr()的对比,并记录学习过程欢迎大家一起交流分享。 ?...新建一个python文件命名为py3_str_vs_repr.py,在这个文件中进行操作代码编写: a = [1,2,3,4] b = 'Hello Moto' print(str(a)) print(...repr(a)) #list:发现使用str()repr() #打印的的结果一样 print(str(b)) print(repr(b)) #String:str()打印结果含有单引号 #repr()...打印结果没有双引号 #上边的代码运行之后好像看不出来 #str()repr()之间有什么区别 #根据官方解释 #str()目标是可读性的打印 #repr()目标是打印明确的信息 #例如: import...print(repr(times)) #datetime.datetime(2019, 5, 29, 21, 34, 0, 10000) #所以说repr()更面向的是开发者去调试程序使用 #str(

    38820

    python3编程基础:str()、repr()的区别

    参考链接: Python repr() 前言  python中转换成字符有两种方法:str()repr(),这两种又有什么区别?什么时候用str?什么时候用repr?...'> >>> print(str(a))  #print输出时会去掉引号,但是仍然是str类型 123 >>> repr(a) '123' >>> type(repr(a)) ...abd' >>> str('abd') == 'abd' True >>> repr('abd') == 'abd' False >>> len(repr('abd'))  #repr转换后的字符串str...转换后的字符串个数都是不一样的 5 >>> len(str('abd')) 3 命令行下print直接输出的对比  每个类都有默认的__repr__, __str__方法,在命令行下用print 实例时调用的是类的...return 'str' ... >>> a = A() >>> a    #直接输出调用的是repr方法 repr >>> print(a)    #print调用的是str方法 str  repr的使用场景

    45400

    python 魔术方法(三)对象的打印 -- __repr__ 与 __str__

    python 魔术方法(二) 对象的创建与单例模式的实现 但有另外两个常用的魔术方法也一样困扰着很多 Python 程序员,那就是本文将介绍的用于对象字符串化的两个方法 — __repr__ __str...logging 打印日志的目的一致,此时调用的是 __str__ 方法 容器的 __str__ 方法调用的是每一个成员的 __repr__ 方法 3....__repr__ TechlogTest.__repr__ [TechlogTest.__repr__] 所有需要调用 __str__ 的地方都改为调用了我们实现的 __repr__ 4....结论 我们看到,默认的方式通常并不是我们想要的,而如果我们只实现了 __repr__,那么所有需要使用 __str__ 的场景都会去调用 __repr__ 因此,实践中的建议是,为每个类都实现 __repr...__ 方法,这种问题是需要格外注意避免的。

    41220

    str、bytesbytearray编码

    str是字符数据,bytesbytearray是字节数据。它们都是序列,可以进行迭代遍历。strbytes是不可变序列,bytearray是可变序列,可以原处修改字节。...bytesbytearray都能使用str类型的通用函数,比如find()、replace()、islower()等,不能用的是str的格式化操作。...要构造bytearray对象,方法之一是将bytes数据作为bytearray()方法的参数,或者将str数据编码作为参数。...关于unicodeutf-X格式的编码关系,粗略地可以认为utf-X是unicode格式的一种特殊类型。实际上在存储utf数据时,内部会自动在Unicodeutf之间进行转换。...\xae\xc4\xe3'使用bytes()bytearray()将str构造成bytes或bytearray数据,这两个方法都要求str->byte的过程中给定编码。

    1.3K20
    领券