Python中的__str__与__repr__

我们先看下面三段代码:

class Foo(object):


    def __repr__(self):

        return '__repr__'


def main():
    a = Foo()
    print(a)


if __name__ == '__main__':
    main()

输出结果:
__repr__

class Foo(object):

    def __str__(self):

        return '__str__'



def main():
    a = Foo()
    print(a)


if __name__ == '__main__':
    main()

输出结果:
__str__

class Foo(object):

    def __str__(self):
        return '__str__'

    def __repr__(self):
        return '__repr__'


# 同时定义的时候返回的是__str__定义
def main():
    a = Foo()
    print(a)


if __name__ == '__main__':
    main()

输出结果:
__str__

再看看下面的代码你就知道__str____repr__的区别:

>>> class Foo(object):
>
        def __str__(self):
            return '__str__'
    
    
>>> a = Foo()
>>> a # 返回的是对象的地址
<__main__.Foo object at 0x000000AE64C79C88>
>>> print(a)
__str__
>>> 

>>> class Foo(object):

        def __repr__(self):
            return '__repr__'

    
>>> a = Foo()
>>> a # 返回的是__repr__
__repr__
>>> print(a)
__repr__
>>> 

你可能感兴趣的:(Python中的__str__与__repr__)