__repr__()
class A :
def __init__(self,name):
self.name=name
#def __str__(self):
# return '**%s**'%self.name
def __repr__(self):
return self.name
a=A('alex')
print(a)#类中没有__repr__()方法 也没有__str__()方法的时候 print(a)打印a对象的内存地址
#类中有了__repr__()方法后 没有__str__()方法 print(a) 打印alex
#类中有__str__()方法 也有__repr__()方法 打印 **alex**
print(str(a),repr(a))#str(obj)触发了__str__()方法 repr(obj)触发了 __repr__()方法
print('%s | %r'%(a,a))#%s触发了__str__()方法 %a触发了__repr__()方法
#print('----%r---'%('abc'))#r是'abc'
#结论:repr(obj)和%r 调用___repr__()方法
#str(obj) %s 调用__str__()方法
#__repr__()方法是__str__()方法的备胎。如果有__str__()方法,那么print('%s) str(obj)都先去执行__str__()方法,并且使用__str__()方法的返回值
#如果没有__str__()方法,那么print('%s') str(oj)都会执行__repr__()方法 #只有__str__()方法的时候 print(str(a),repr(a))打印的是 **alex** <__main__.A object at 0x007BB9B0>
#只有__str__()方法的时候 print('%s | %r'%(a,a))打印的是**alex** | <__main__.A object at 0x007BB9B0>
#只有__repr__()方法的时候 print(str(a),repr(a))打印的是alex alex
#只有__repr__()方法的时候 print('%s | %r'%(a,a))打印的是alex | alex
class A :
def __init__(self,name):
self.name=name
def __str__(self):
return '**%s**'%self.name
def __repr__(self):
return self.name
class B(A):
def __init__(self,name):
self.name=name
#def __str__(self):
# return '***'
def __repr__(self):
return '~~~~'
a=B('alex')
print(a)
print(str(a),repr(a))#当子类B中只有__init__()方法 print(str(a),repr(a))打印**alex** alex
print('%s |%r'%(a,a))#当子类B中只有__init__()方法 print('%s |%r'%(a,a))打印**alex** |alex
#当子类B中有__str__()方法 ,没有__repr__() print(str(a),repr(a))打印*** alex
#当子类B中有__str__()方法 ,没有__repr__() print('%s |%r'%(a,a))打印*** alex
#当子类B中有__repr__()方法,没有__str__() print(str(a),repr(a))打印**alex** ~~~~
#当子类B中有__repr__()方法,没有__str__() print("%s |%r'%(a,a))打印**alex** ~~~~ #----------结论:在子类中使用__str__()先找子类的__str__() 没有的话向上找,只要父类不是object,就执行父类的__str__()方法
#但是如果出了object之外的父类都没有__str__()方法,就执行子类的__repr__()方法,如果子类也没有,还要向上继续找父类中的__repr__()方法
#一直找不到 再执行object类中的__repr__()方法
__repr__()的更多相关文章
- python 的特殊方法 __str__和__repr__
__str__和__repr__ 如果要把一个类的实例变成 str,就需要实现特殊方法__str__(): class Person(object): def __init__(self, name, ...
- python的class的__str__()和__repr__()函数
repr(object) 返回一个可以用来表示对象的可打印字符串首先,尝试生成这样一个字符串,将其传给 eval()可重新生成同样的对象 否则,生成用尖括号包住的字符串,包含类型名和额外的信息(比如地 ...
- python __str__ & __repr__ & __cmp__
For ( __str__ ),we going to see a example ... and find who is working for ... #!/usr/bin/python clas ...
- python面对对象编程------4:类基本的特殊方法__str__,__repr__,__hash__,__new__,__bool__,6大比较方法
一:string相关:__str__(),__repr__(),__format__() str方法更面向人类阅读,print()使用的就是str repr方法更面对python,目标是希望生成一个放 ...
- python __str__ 和__repr__方法
看下面的例子就明白了 class Test(object): def __init__(self, value='hello, world!'): self.data = value >> ...
- __str__与__repr__
在讲解之前,我们先来了解下str和repr的区别:两者都是用来将数字,列表等类型的数据转化为字符串的形式.不同之处在于str更加类似于C语言中使用printf输出的内容,而repr输出的内容会直接将变 ...
- 面向对象(__str__和__repr__方法)
#Author : Kelvin #Date : 2019/1/21 16:19 class App: def __init__(self,name): self.name=name # def __ ...
- 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/ 目的 ...
- 面向对象___str__和__repr__
老师的博客关于此知识点 http://www.cnblogs.com/Eva-J/articles/7351812.html#_label7 __str__和__repr__ 改变对象的字符串显示__ ...
随机推荐
- Python 私有化类的属性
class MandgerSec: def __init__(self,name,gender,level): self.type=("fire",None) self.name= ...
- 如何快速删除Linux下的svn隐藏文件及其他临时文件 (转载)
转自:http://blog.csdn.net/edsam49/article/details/5840489 在Linux下,你的代码工程如果是用svn进行管理的,要删除Linux kernel里的 ...
- poj 3613 Cow Relays【矩阵快速幂+Floyd】
!:自环也算一条路径 矩阵快速幂,把矩阵乘法的部分替换成Floyd(只用一个点扩张),这样每"乘"一次,就是经过增加一条边的最短路,用矩阵快速幂优化,然后因为边数是100级别的,所 ...
- 10.19NOIP模拟赛(DAY2)
/* 正解O(n)尺取法orz 我写的二分答案.本来以为会被卡成暴力分...... 这个-'0'-48是我写的吗........我怎么不记得... */ #include<bits\stdc++ ...
- 10.11NOIP模拟题(2)
/* string水过 */ #include<bits/stdc++.h> #define N 1001 using namespace std; int n,x,y,m,pre; st ...
- [Swift]Array数组的swapAt函数
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- SQL 增加, 删除父子级带事务的存储过程
if (object_id('proc_DeleteFile', 'P') is not null) drop proc proc_DeleteFile gocreate PROCEDURE ...
- [ZJOI2008]杀蚂蚁
题意翻译 注意在(0,0)已经有蚂蚁的时候是不会生成新蚂蚁的 还有如果有蚂蚁扛着蛋糕,但是不在某个炮的范围内,炮仍然会打最近的蚂蚁 题目描述 最近,佳佳迷上了一款好玩的小游戏:antbuster. 游 ...
- 题解报告:poj 3669 Meteor Shower(bfs)
Description Bessie hears that an extraordinary meteor shower is coming; reports say that these meteo ...
- Linux下磁盘分区、挂载、卸载操作记录
Linux下磁盘分区.挂载.卸载操作记录. 操作环境:CentOS release 6.5 (Final) Last :: from 118.230.194.76 [root@CentOS ~]# [ ...