python中 __str__和__repr__

枫铃3年前 (2021-09-30)Python263

如果要把一个类的实例变成 str,就需要实现特殊方法__str__()

 class Person(object):
     def __init__(self, name, gender):
         self.name = name
         self.gender = gender
     def __str__(self):
         return '(Person: %s, %s)' % (self.name, self.gender)

现在,在交互式命令行下用 print 试试:

'''
Python学习交流,免费公开课,免费资料,
免费答疑,系统学习加QQ群:579817333 
'''

 >>> p = Person('Bob', 'male')
 >>> print p
 (Person: Bob, male)

但是,如果直接敲变量 p:

>>> p
<main.Person object at 0x10c941890>

似乎__str__()不会被调用。

因为 Python 定义了__str__()__repr__()两种方法,__str__()用于显示给用户,而__repr__()用于显示给开发人员。

有一个偷懒的定义__repr__的方法:

class Person(object):
    def __init__(self, name, gender):
        self.name = name
        self.gender = gender
    def __str__(self):
        return '(Person: %s, %s)' % (self.name, self.gender)
    __repr__ = __str__

相关文章

python多进程编程常用到的方法

python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU资源,在python中大部分情况需要使用多进程。pyth...

常见Python爬虫工具总结

前言 以前写爬虫都是用requests包,虽然很好用,不过还是要封装一些header啊什么的,也没有用过无头浏览器...

python中自带的三个装饰器

说到装饰器,就不得不说python自带的三个装饰器: 1、@property 将某函数,做为属性使用 &...

提高Python程序运行效率三种模式第一种:多进程multiprocessing模块

python是一个解释性语言,所以它不需要进行编译就可以直接使用: 编译型语言在程序执行之前,先会通过编译器对程...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。