首页 > 编程语言 > 详细

python中__str__与__repr__的区别

时间:2019-04-28 23:14:57      阅读:227      评论:0      收藏:0      [点我收藏+]

__str__和repr

__str__和__repr__都是python的内置方法,都用与将对象的属性转化成人类容易识别的信息,他们有什么区别呢

来看一段代码

from math import hypot


class Vector:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __str__(self):
        return 'Vector(%r,%r)' % (self.x, self.y)

    def __abs__(self):
        return hypot(self.x, self.y)

    def __bool__(self):
        return bool(abs(self))

    def __add__(self, other):
        x = self.x + other.x
        y = self.y + other.y
        return Vector(x,y)

    def __mul__(self, scalar):
        """相乘时调用__mul__方法"""
        return Vector(self.x * scalar, self.y * scalar)



在控制台进行如下输入

from cheapter_1.vector import Vector
v1=Vector(3,4)
v1
<cheapter_1.vector.Vector object at 0x000001D7B67BDA90>
print(v1)
Vector(3,4)



把__str__换成__repr__

    def __repr__(self):
        return 'Vector(%r,%r)' % (self.x, self.y)



在控制台重复上述操作

from cheapter_1.vector import Vector
v1 = Vector(3,4)
v1
Vector(3,4)
print(v1)
Vector(3,4)



同时定义__str__和__repr__

    def __str__(self):
        return "in __str__"

    def __repr__(self):
        return 'Vector(%r,%r)' % (self.x, self.y)



在控制台进行以下操作

from cheapter_1.vector import Vector
v1=Vector(3,4)
v1
Vector(3,4)
print(v1)
in __str__


小结

__str__和__repr__的区别主要有以下几点

  • __str__是面向用户的,而__repr__面向程序员去找
  • 打印操作会首先尝试__str__和str内置函数(print运行的内部等价形式),如果没有就尝试__repr__,都没有会输出原始对象形式
  • 交互环境输出对象时会调用__repr__

python中__str__与__repr__的区别

原文:https://www.cnblogs.com/zzliu/p/10787606.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!