python3.x __str__与__repr__
__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__的更多相关文章
- [Python3 填坑] 015 __str__ 与 __repr__ 的区别
目录 1. print( 坑的信息 ) 2. 开始填坑 2.1 上例子 2.2 关系与区别 Python 3.7.3 的官方文档 网上看到一个例子,运行了一下 简单地说 1. print( 坑的信息 ...
- python中魔法方法__str__与__repr__的区别
提出问题 当我们自定义一个类时,打印这个类对象或者在交互模式下直接输入这个类对象按回车,默认显示出来的信息好像用处不大.如下所示 In [1]: class People: ...: def __in ...
- 浅谈python中__str__和__repr__的区别
很多时候我们在创建一个类的时候,在终端打印类或者查看的时候一般都不会得到一个太满意的结果 class T: def __init__(self): self.color="red" ...
- python中__str__与__repr__
(1)背景 python中,对于类(自定义类)的实例对象的默认显示既没有太大用处,也不美观.比如: class adder: def __init__(self,value=0): self.data ...
- python 的特殊方法 __str__和__repr__
__str__和__repr__ 如果要把一个类的实例变成 str,就需要实现特殊方法__str__(): class Person(object): def __init__(self, name, ...
- __str__与__repr__
在讲解之前,我们先来了解下str和repr的区别:两者都是用来将数字,列表等类型的数据转化为字符串的形式.不同之处在于str更加类似于C语言中使用printf输出的内容,而repr输出的内容会直接将变 ...
- python中__str__与__repr__的区别
__str__和repr __str__和__repr__都是python的内置方法,都用与将对象的属性转化成人类容易识别的信息,他们有什么区别呢 来看一段代码 from math import hy ...
- 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/ 目的 ...
- python之反射和内置函数__str__、__repr__
一.反射 反射类中的变量 反射对象中的变量 反射模块中的变量 反射本文件中的变量 .定义:使用字符串数据类型的变量名 来获取这个变量的值 例如: name = 'xiaoming' print(nam ...
随机推荐
- SQL执行顺序和coalesce以及case when的用法
1.mysql的执行顺序 from on join where group by having select distinct union //UNION 操作符用于合并两个或多个 SELECT ...
- 用JSP实现WEB页面登录验证
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- centos7安装完成之后必要的配置
一配置yum源 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo wget ...
- java 通过反射获取类属性结构,类方法,类父类及其泛型,类,接口和包
首先自定义三个类 package reflection1; public interface MtInterface { void info(); } package reflection1; imp ...
- mysql审计插件
Audit Plugin安装使用 原文: https://www.cnblogs.com/waynechou/p/mysql_audit.html#_label0 #有卸载方法 下载地址: htt ...
- intellijidea 设置字体等
http://blog.csdn.net/asmcvc/article/details/17144951 1.下载安装AndroidStudio:http://developer.android.co ...
- sdb报告-10 错误问题定位
# sdb报告-10 错误问题定位在sdb 的集群环境中,如果面对的是一个高并发的操作场景,有时候会莫名其妙地报告 -10 错误. 在 sdb 的错误列表中,-10 错误代表:系统错误. 这是一个笼统 ...
- Python 进阶_OOP 面向对象编程_静态方法和类方法
目录 目录 静态方法 类方法 使用函数修饰符来声明静态方法和类方法 静态方法 静态方法仅是类中的函数, 不需要绑定实例, 也就是说静态方法的定义不需要传入 self 参数. 静态方法不属于类的某一个实 ...
- row_number() over partition by 分组聚合
分组聚合,就是先分组再排序,可以的话顺手标个排名:如果不想分组也可以排名:如果不想分组同时再去重排名也可以 ROW_NUMBER() OVER( [PARTITION BY column_1, col ...
- 抓包工具fiddler下载配置(一):下载/安装&信任证书
简介 Fiddler一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件 ...