Python进阶-----通过类的内置方法__str__和__repr__自定制输出(打印)对象时的字符串信息

Posted Meanwey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python进阶-----通过类的内置方法__str__和__repr__自定制输出(打印)对象时的字符串信息相关的知识,希望对你有一定的参考价值。

__str__方法其实是在print()对象时调用,所以可以自己定义str字符串显示信息,在该方法return一个字符串,如果不是字符串则报错
print(obj) 等同于-->str(obj) 等同于-->obj.__str__

#未自定__str__信息
class Foo:
    def __init__(self,name,age):
        self.name = name
        self.age = age

f = Foo(Menawey,24)
print(f)   #<__main__.Foo object at 0x000002EFD3D264A8>  因为没有定制__str__,则按照默认输出

#自定__str__信息
class Foo:
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def __str__(self):
        return 名字是%s,年龄是%d%(self.name,self.age)

f1 = Foo(Meanwey,24)
print(f1)           #名字是Meanwey,年龄是24
s = str(f1)         #---> f1.__str__
print(s)            #名字是Meanwey,年龄是24

__repr__方法是在控制台直接输出一个对象信息或者print一个对象信息时调用,如果自定了__str__信息,print时默认执行__str__
如果没有自定__str__,则print时执行__repr__

#未自定__str__信息,自定了__repr__
class Foo:
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def __repr__(self):
        return 来自repr-->名字是%s,年龄是%d%(self.name,self.age)

f2 = Foo(Meanwey,24)
print(f2)               #来自repr-->名字是Meanwey,年龄是24   因为没有自定__str__,则执行__repr__

#自定了__str__信息,自定了__repr__
class Foo:
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def __str__(self):
        return 来自str-->名字是%s,年龄是%d%(self.name,self.age)

    def __repr__(self):
        return 来自repr-->名字是%s,年龄是%d%(self.name,self.age)

f2 = Foo(Meanwey,24)
print(f2)               #来自str-->名字是Meanwey,年龄是24   因为自定了__str__,则print时不会执行__repr__

 



以上是关于Python进阶-----通过类的内置方法__str__和__repr__自定制输出(打印)对象时的字符串信息的主要内容,如果未能解决你的问题,请参考以下文章

Python进阶-----通过类的内置方法__str__和__repr__自定制输出(打印)对象时的字符串信息

Python进阶-----类的内置方法__getattribute__

Python之路(第二十六篇) 面向对象进阶:内置方法

铁乐学python_day24_面向对象进阶1_内置方法

python进阶之内置函数和语法糖触发魔法方法

python进阶之类常用魔法方法和魔法属性