__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. gulp为css,js添加版本号

    由于cdn缓存,更改样式后会有一段时间不生效,解决方法就是给css,js加上版本号效果如下: 1.安装gulp插件 npm install --save-dev gulp-rev (version:9 ...

  2. Linux进程前后台管理(&,fg, bg)

    将进程置于后台 xlogo & 会把进程置于后台管理,使用ps命令查看进程 PID. 使用命令jobs [1]+ Running xlogo & 可以看到正在运行的 xlogo 进程. ...

  3. UiAutomator、UiAutomator2、Bootstrap的关系

    很多同学经过一段时间的学习之后都明白了Appium的基本原理,但是越学习到后面发现出现的很多陌生名词无法弄清楚其具体作用,今天这篇文章的目的就是为了让大家来弄懂三个高频名词:UiAutomator.U ...

  4. WIN10无法识别安卓设备,提示Windows 无法验证此设备所需的驱动程序的数字签名

    在设备管理器,显示ANDROID设备是感叹号, 不管更新驱动,还是下载什么手机助手自动安装驱动,均不可解. 从属性中查看提示的是“Windows 无法验证此设备所需的驱动程序的数字签名”, 解决办法: ...

  5. python学习笔记(五)文件操作和集合

    文件基本操作: 现有文件file.txt f=open('file.txt','r')#以只读方式打开一个文件,获取文件的句柄,如果是读的话,r可以不写,默认就是只读:文件不存在时,会报错 first ...

  6. CALayer的mask属性

    可以对图层按path进行指定裁剪 //#import "ViewController.h" // //@interface ViewController () // //@end ...

  7. npm 是干什么的?(非教程)

    看了之后就很清楚什么叫NPM,以后它是干嘛的.谢谢楼主 网上的 npm 教程主要都在讲怎么安装.配置和使用 npm,却不告诉新人「为什么要使用 npm」.今天我就来讲讲这个话题. 本文目标读者是「不太 ...

  8. shell脚本学习(6)awk 编排字段

    awk能取出文本字段重新编排 1 awk的用法 awk ‘program’ [file] 2 其中program 可以写成 ‘parrtern {action}’    pattern 或 actio ...

  9. JS中数据结构之字典

    字典是一种以键 - 值对形式存储数据的数据结构 通过数组实现字典 function Dictionary() { this.add = add; this.datastore = new Array( ...

  10. paper 159:文章解读:From Facial Parts Responses to Face Detection: A Deep Learning Approach--2015ICCV

    文章链接:https://arxiv.org/pdf/1509.06451.pdf 1.关于人脸检测的一些小小总结(Face Detection by Literature) (1)Multi-vie ...