python类中方法__str__()和__repr__()简单粗暴总结

在交互式模式下,类中同时实现__str__()和__repr__()方法:

直接输入实例名称显示repr返回的类容;

用print打印实例名称显示str返回的内容;

>>> class Test:
...     def __repr__(self):
...         return ‘Test -> return repr‘
...     def __str__(self):
...         return ‘Test -> return str‘
...
>>> t = Test()
>>> t
Test -> return repr
>>> print(t)
Test -> return str

在交互式模式下,如果只实现了__repr__()方法则:

直接输入实例名称和print打印都显示repr返回的内容。

>>> class Test:
...     def __repr__(self):
...         return ‘Test -> return repr‘
...
>>> t = Test()
>>> t
Test -> return repr
>>> print(t)
Test -> return repr

在交互式模式下,如果只实现了__str__()方法则:

直接输入实例名称返回的是对象地址信息。

而print打印输出的是str返回的内容。

>>> class Test:
...      def __str__(self):
...          return ‘Test -> return str‘
...
>>> t = Test()
>>> t
<__main__.Test object at 0x00000234355D43C8>
>>> print(t)
Test -> return str

总结:

一般情况下,让repr成为str的一个别名输出相同的内容就可以了。

>>> class Test:
...     def __str__(self):
...         return ‘Test -> return str‘
...     __repr__ = __str__
...
>>> t = Test()
>>> t
Test -> return str
>>> print(t)
Test -> return str

原文地址:https://www.cnblogs.com/bryant24/p/11428987.html

时间: 2024-10-14 00:50:52

python类中方法__str__()和__repr__()简单粗暴总结的相关文章

python 的特殊方法 __str__和__repr__

__str__和__repr__ 如果要把一个类的实例变成 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类中实例属性的通用显示工具

0.说明 以下的思想方法非常有用,可以帮助你在Python开发提高开发和维护效率,所以可能的话,请仔细琢磨一下其中的代码. 之前在用Python编写一个类时,为了显示的友好性,总是需要在每个类中重载__str__或者__repr__方法,现在有了更好的方法,不需要在每个类中都这么做了,下面给出的方法非常实用. 下面使用的例子使用的Python版本都是Python3.5,但实际上在Python2.7中进行也没有任何影响. 1.正常情况下类实例的不友好显示 在Python中编写一个类时,由于没有重载

python中魔法方法__str__与__repr__的区别

提出问题 当我们自定义一个类时,打印这个类对象或者在交互模式下直接输入这个类对象按回车,默认显示出来的信息好像用处不大.如下所示 In [1]: class People: ...: def __init__(self, name, sex): ...: self.name = name ...: self.sex = sex ...: In [2]: p = People('xiaoming', 'male') In [3]: p Out[3]: <__main__.People at 0x7

python 的print和特殊方法 __str__和__repr__

先提出一个疑问,为什么print函数可以直接打印参数呢?即使是数字?例如print 1,就会打印1.我们知道1的类型是整型(题外话,在python中1是常量,也是类int的对象,而java中1只是常量),按理说print接受的参数应该是字符串啊? 回答: 因为print函数会首先调用str()函数将参数转化为str类型,而str()函数会调用这个参数所属类中的__str__方法,这个方法定义在object类中.我们知道一切类都是这个object类的子类(在python3中是,即使在定义类的时候没

python类及其方法

python类及其方法 一.介绍 在 Python 中,面向对象编程主要有两个主题,就是类和类实例类与实例:类与实例相互关联着:类是对象的定义,而实例是"真正的实物",它存放了类中所定义的对象的具体信息. 类有这样一些的优点: 1.类对象是多态的:也就是多种形态,这意味着我们可以对不同的类对象使用同样的操作方法,而不需要额外写代码. 2.类的封装:封装之后,可以直接调用类的对象,来操作内部的一些类方法,不需要让使用者看到代码工作的细节. 3.类的继承:类可以从其它类或者元类中继承它们的

C#反射调用程序集类中方法

建立类 class OperatorClass { /// <summary> /// 加法 /// </summary> /// <param name="x"></param> /// <param name="y"></param> /// <returns></returns> /// public static int Add(int x, int y) { r

struts_2_Action类中方法的动态调用

(一)直接调用方法(不推荐使用) 1)Action类: private String savePath; public String getSavePath() { return savePath; } public void setSavePath(String savePath) { this.savePath = savePath; } public String other() { savePath = "other"; return "success";

Python 类中的 self?

什么是 self ? 它是类实例自身的引用.其他语言通常使用一个名为 this 的标识符 --<Python核心编程> 如何定义类: class ClassName(base_class[es]):  (1) "optional documentation string" static_member_declarations #类静态成员声明 method_declarations #类方法声明 (1) 括号内位基类,如果没有,就实用object作为基类 .....待续 P

两幅图说明python类中self的含义

总结:self是对于对象自身的引用.这里的圆括号里的self也可以换成其它你想要的任意名称,只是self更形象和通用些. 两幅图说明python类中self的含义