__repr__和__str__用于显示,__str__是面向用户的,而__repr__面向coder【调试与开发】

repr(默认交互式回显)【来自python入门

str(也就是打印语句) 一般用途

输出的话先调用__str__,通常返回时字符串显示,

打印操作会先尝试__str__和str内置函数(print运行的内部等价形式)通常返回用户一个友好显示

__repr__用于所有其他环境之中:用于交互模式下提示回应以及repr函数,如果没有使用__str__,会使用print和str,通常返回一个编码字符串,可以用来创建对象,或者给开发者一个详细的显示

__repr__用于任何地方,除了当定义一个__str__的时候,使用print和str,要注意,没有定义__str__

打印还是使用__repr__,但是反过来不成立,其他环境(交互式响应模式)只是使用__repr__不需要尝试__str__

以下是打印一个对象的信息,

重载该类的__str__,__repr__,__gt__,__lt__,__eq__等

class Person(object):

  def __init__(self, name, gender,age, **kw):
    self.name=name
    self.gender=gender
    self.age=age
#for k,v in kw.iteritems():py2.x
    for k,v in kw.items():#py3.x
      setattr(self, k, v)

  def __eq__(self, value):
    if self.gender == value.gender:
      return 1
    else:
      return 0
  def __gt__(self, value):
    if self.gender > value.gender:
      return 1
    else:
      return 0
  def __lt__(self, value):
    if self.gender < value.gender:
      return 1
    else:
      return 0

  def __repr__(self):
    return '(Student_repr: %s, %s)'%(self.name, self.gender)
  def __str__(self):
    #print(self.name+' '+self.gender)这里不能直接print只能return
    return '(Student: %s, %s)'%(self.name, self.gender)
  def __cmp__(self,s):
    if self.score == s.score:
      return self.name> s.name
    return -(self.score>s.score)

p = Person('Bob', 'Male', age=18, course='Python')
L = [Person('Tim', 99, 18), Person('Bob', 68, 28), Person('Alice', 99, 29)]
def new_sort(obj):
  if obj.gender>=90:
    print(1)
  elif obj.gender>=60:
    print(2)
  else:
    print(3)

#print (p.age)
#print (p.course)
#print(p)
#print(L)
sorted(L, reverse=True)
print(L)#为什么这里输出的是list里面对象的地址? 这就是__str__跟__repr__的区别

python3.x __str__与__repr__的更多相关文章

  1. [Python3 填坑] 015 __str__ 与 __repr__ 的区别

    目录 1. print( 坑的信息 ) 2. 开始填坑 2.1 上例子 2.2 关系与区别 Python 3.7.3 的官方文档 网上看到一个例子,运行了一下 简单地说 1. print( 坑的信息 ...

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

    提出问题 当我们自定义一个类时,打印这个类对象或者在交互模式下直接输入这个类对象按回车,默认显示出来的信息好像用处不大.如下所示 In [1]: class People: ...: def __in ...

  3. 浅谈python中__str__和__repr__的区别

    很多时候我们在创建一个类的时候,在终端打印类或者查看的时候一般都不会得到一个太满意的结果 class T: def __init__(self): self.color="red" ...

  4. python中__str__与__repr__

    (1)背景 python中,对于类(自定义类)的实例对象的默认显示既没有太大用处,也不美观.比如: class adder: def __init__(self,value=0): self.data ...

  5. python 的特殊方法 __str__和__repr__

    __str__和__repr__ 如果要把一个类的实例变成 str,就需要实现特殊方法__str__(): class Person(object): def __init__(self, name, ...

  6. __str__与__repr__

    在讲解之前,我们先来了解下str和repr的区别:两者都是用来将数字,列表等类型的数据转化为字符串的形式.不同之处在于str更加类似于C语言中使用printf输出的内容,而repr输出的内容会直接将变 ...

  7. python中__str__与__repr__的区别

    __str__和repr __str__和__repr__都是python的内置方法,都用与将对象的属性转化成人类容易识别的信息,他们有什么区别呢 来看一段代码 from math import hy ...

  8. What is the difference between __str__ and __repr__ in Python

    from https://www.pythoncentral.io/what-is-the-difference-between-__str__-and-__repr__-in-python/ 目的 ...

  9. python之反射和内置函数__str__、__repr__

    一.反射 反射类中的变量 反射对象中的变量 反射模块中的变量 反射本文件中的变量 .定义:使用字符串数据类型的变量名 来获取这个变量的值 例如: name = 'xiaoming' print(nam ...

随机推荐

  1. android android studio error

    SIMPLE: Error computing //cmake 包含的跨平台头文件或者是源文件路径出错

  2. Centos7.4 离线安装httpd(解决rpm依赖)

    1.直接下载httpd的rpm安装包,安装失败需要先解决依赖. [root@node06 ~]# rpm -ivh httpd--.el7.centos.x86_64.rpm warning: htt ...

  3. Java Web学习总结(8)JSP(二)

    一,JSP中的九个内置对象 名称 类型 描述 out javax.servlet.jsp.JspWriter 用于页面输出 request javax.servlet.http.HttpServlet ...

  4. php ord()函数 语法

    php ord()函数 语法 作用:返回字符串的首个字符的 ASCII 值.直线电机生产厂家 语法:ord(string) 参数: 参数 描述 string 必须,要从中获得ASCII值的字符串 说明 ...

  5. Android逆向之旅---Android应用的汉化功能(修改SO中的字符串内容)

    一.前言 今天我们继续来讲述逆向的知识,今天我们来讲什么呢?我们在前一篇文章中介绍了关于SO文件的格式,今天我们继续这个话题来看看如何修改SO文件中的内容,看一下我们研究的主题: 需求:想汉化一个Ap ...

  6. LUOGU P3380 【模板】二逼平衡树(树套树)

    传送门 解题思路 这里写的是常数巨大的线段树套\(splay\),卡了半天常才过.首先线段树每个节点挂一个\(splay\),\(splay\)中的元素即为线段树管辖的区间中的数.对于操作\(1\), ...

  7. CocoaPods中pod search报错的解决办法

    pod search报错的原因: 每次使用pod search命令的使用会在该目录下生成一个search_index.json文件,会逐渐的增大,文件达到一定大小后,ruby解析里面的json字符就会 ...

  8. centos查看磁盘空间大小

    查看磁盘空间大小 df -h 查看当前文件夹所有文件大小 du -sh 查看指定文件夹大小 du -h /data 查看指定文件夹下所有文件的大小 du -h /data/ 查看指定文件大小 du - ...

  9. 深入浅出HashMap

    /** *@ author ViVi *@date 2014-6-11 */ Hashmap是一种非常常用的.应用广泛的数据类型,最近研究到相关的内容,就正好复习一下.希望通过仪器讨论.共同提高~ 1 ...

  10. Websphere如何查看后台的日志以及简单应用

    文章目录 查找日志 简单应用: 安装应用 查找日志 /opt/IBM/WebSphere/AppServer/profiles/default/logs/server1/SystemOut.log 这 ...