美文网首页
__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