美文网首页
__str__() 和 __repr__()

__str__() 和 __repr__()

作者: hie | 来源:发表于2018-11-20 16:19 被阅读0次

定义一个Student类,打印它的实例

class Student :

          def __init__(self, name):

           self._name = name

def main():

        s = Student('小明')

        print(s)

if __name__ =='__main__':

    main()

输出

<__main__.Student object at 0x10cac5400>

,要想打印一个字符串,需用到 __str__()

class Student :

    def __init__(self, name):

            self._name = name

    def __str__(self):

            return 'Student object (name: %s)' %self._name

def main():

        s = Student('小明')

        print(s)

if __name__ =='__main__':

    main()

输出,

Student object (name: 小明)

如果直接敲变量不用print,打印出来的还是:<__main__.Student object at 0x10cac5400>

因为直接显示变量调用的不是__str__(),而是__repr__(),两者的区别是__str__()返回用户看到的字符串,而__repr__()返回程序开发者看到的字符串,也就是说,__repr__()是为调试服务的。

解决办法是再定义一个__repr__()。但是通常__str__()和__repr__()代码都是一样的,所以,有个偷懒的写法:

class Student:

    def __init__(self, name):

            self._name = name

    def __str__(self):

            return 'Student object (name: %s)' %self._name

     __repr__ =__str__

def main():

        s = Student('小明')

        print(s)

if __name__ =='__main__':

        main()

相关文章

网友评论

      本文标题:__str__() 和 __repr__()

      本文链接:https://www.haomeiwen.com/subject/ejfafqtx.html