python - __str__ 和 __repr__】的更多相关文章

1. 没定义__str__() print的时候得不到自己想要的东西 类默认转化的字符串基本没有我们想要的一些东西,仅仅包含了类的名称以及实例的 ID (理解为 Python 对象的内存地址即可).虽说这总比没有好,但确实是没什么用处啊. 所以,我们可能会手动打印对象的一些属性或者是在类里自己实现一个方法来返回我们需要的信息 2.使用 __str__ 实现类到字符串的转化 3.另一个就是 __repr__ 方法.后者的工作方式与前者类似,但是它被调用的时机不同 另外,列表以及字典等容器总是会使用…
内建函数str()和repr() (representation,表达,表示)或反引号操作符(``)可以方便地以字符串的方式获取对象的内容.类型.数值属性等信息.str()函数得到的字符串可读性好(故被print调用),而repr()函数得到的字符串通常可以用来重新获得该对象,通常情况下 obj==eval(repr(obj)) 这个等式是成立的.这两个函数接受一个对象作为其参数,返回适当的字符串. 事实上repr()和``做一样的事情,返回一个对象的“官方”字符串表示.其结果绝大多数情况下(不…
看下面的例子就明白了 class Test(object): def __init__(self, value='hello, world!'): self.data = value >>> t = Test() >>> t <__main__.Test at 0x7fa91c307190> >>> print t <__main__.Test object at 0x7fa91c307190> # 看到了么?上面打印类对象并不…
__str__和__repr__ 如果要把一个类的实例变成 str,就需要实现特殊方法__str__(): class Person(object): def __init__(self, name, gender): self.name = name self.gender = gender def __str__(self): return '(Person: %s, %s)' % (self.name, self.gender) 现在,在交互式命令行下用 print 试试: >>>…
__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): retu…
from https://www.pythoncentral.io/what-is-the-difference-between-__str__-and-__repr__-in-python/ 目的 官方解释: object.__repr__(self): called by the repr() built-in function and by string conversions (reverse quotes) to compute the "official" string r…
反射: 使用字符串数据类型的变量名来使用变量 wwwh即what,where,why,how  这4点是一种学习方法 反射 :使用字符串数据类型的变量名来使用变量 1.文件中存储的都是字符串 2.网络上能传递的也最接近字符串 3.用户输入的也是字符串 上面的3种情况都是字符串,如果有这种情况的,需要操作类或者模块时,就需要用到反射 有4种应用 类调用静态属性对象调用属性 和 方法模块调用模块中的名字调用自己模块中的名字 a = 1 import sys b = getattr(sys.modul…
一.今日内容总结 1.反射 使用字符串数据类型的变量名来操作一个变量的值. #使用反射获取某个命名空间中的值, #需要 #有一个变量指向这个命名空间 #字符串数据类型的名字 #再使用getattr获取值, #如果变量能直接获取结果 #如果是函数,只能拿到内存地址,加上括号就是执行 #使用类名反射: 静态属性.类方法.静态方法 #使用对象名反射: 对象属性.绑定对象方法 #使用模块名反射: 变量.函数.类 #在自己所在文件中反射全局变量: getattr(sys.modules[__name__]…
__repr__,被内置函数repr用于把一个对象用"官方"的字符串形式表示出来(终端友好)    1.值传给eval()来返回一个对象的字符串表示形式    2.否则返回一个尖括号括起来的字符串,包含了对象类型的名称和附加的信息通常包括对象的名称和地址    3.一个类可以通过 __repr__方法来控制它的实例返回内容(也就是以上两点都通可以通过__repr__方法来定制)    4.返回 Unicode 字符串(str 类型)    __str__,被str(object) 和内…
一.反射 通过字符串的形式操作对象相关的属性.(使用字符串数据类型的变量名来获取这个变量的值) Python中的一切事物都是对象(都可以使用反射) 反射类中的变量 反射对象中的变量 反射模板中的变量 反射本文件中的变量 用反射的场景: input 网络 文件 #hasattr def hasattr(*args, **kwargs): # real signature unknown """ Return whether the object has an attribute…
Python 有办法将任意值转为字符串:将它传入repr() 或str() 函数. 函数str() 用于将值转化为适于人阅读的形式,而repr() 转化为供解释器读取的形式 (如果没有等价的语法,则会发生SyntaxError 异常) 某对象没有适于人阅读的解释形式的话, str() 会返回与repr() 等同的值.很多类型,诸如数值或链表.字典这样的结构,针对各函数都有着统一的解读方式. 字符串和浮点数,有着独特的解读方式. class Person(object): def __str__(…
本文参考自: https://stackoverflow.com/questions/18393701/the-difference-between-str-and-repr?noredirect=1&lq=1 在stackoverflow上,有个兄弟问了这个问题: 首先定义一个类: class Item(): def __init__(self,name): self._name=name def __str__(self): return "Item's name is :"…
python中,一切都是对象 在Python中,所有以“__”双下划线包起来的方法,都统称为“Magic Method”--魔术方法 1.__call__:作用是把类实例变成一个可调用对象 在Python中,函数其实是一个对象: >>> f = abs >>> f.__name__ 'abs' >>> f(-123) 123 由于 f 可以被调用,所以,f 被称为可调用对象. 所有的函数都是可调用对象.所有的函数都默认实现了方法"__call…
Python有一个内置的函数叫repr,它能把一个对象用字符串的形式表达出来以便辨认,这就是“字符串表示形式”.repr就是通过__repr__这个特殊方法来得到一个对象的字符串表示形式.如果没有实现__repr__,当我们再控制台里打印一个变量的实例时,得到的字符串可能会是<__main__.Object at 0x14af07dbe80>,这个表示的是打印的对象,以及对象的内存地址 现在让我们看看__str__和__repr__这两个方法有什么区别 首先定义一个类 class Vector…
如果要把一个类的实例变成 str,就需要实现特殊方法__str__(): class A(object): def __init__(self,name,age): self.name=name self.age=age def __str__(self): return "this is __str__" def __repr__(self): return "this is __repr__" 如果类中没有str和repr方法,打印实例化对象a会得到:<_…
很多时候我们在创建一个类的时候,在终端打印类或者查看的时候一般都不会得到一个太满意的结果 class T: def __init__(self): self.color="red" self.count = 2 t = T()t >>> <T object at 0x0000000003444E10> print(t) >>> <T object at 0x0000000003444E10> 类转化为字符串,直接打印结果一般都…
(1)背景 python中,对于类(自定义类)的实例对象的默认显示既没有太大用处,也不美观.比如: class adder: def __init__(self,value=0): self.data=value #初始化数据 def __add__(self,other): self.data+=other >>>print(x) <__main__.adder. object at 0x.....> >>>x  <__main__.adder ob…
一.反射 反射类中的变量 反射对象中的变量 反射模块中的变量 反射本文件中的变量 .定义:使用字符串数据类型的变量名 来获取这个变量的值 例如: name = 'xiaoming' print(name) # xiaoming print('name') # name 平时我们要想获取'xiaoming'这个值,要用name去获取,但是如果想用字符串'name' 获取这个值呢, 就需要用到反射. .反射应用的场景(就是把接收的字符串转换成变量的名字便于使用) ,input 用户输入的如果是a,那…
__str__()和__repe__()方法定义一个值通过print打印时返回时的显示样式 l=list('hello') print(l) #['h', 'e', 'l', 'l', 'o'] class animal: pass cat=animal() print(cat) #<__main__.animal object at 0x0000021035247748> 上面例子,cat实例的返回不具有可读性,下面通过__str__()和__repe__()方法自定义显示样式. class…
类的内置方法 它与内置函数有紧密的联系,有的内置函数就是调用的内置方法. 在顶级父类obj中有: 两个双下方法 obj.__str__ str(obj) obj.__repr__ repr(obj) 1.__str__ 与 __repr__ class Teacher: def __init__(self, name, salary): self.name = name self.salary = salary def __str__(self): return "Teacher's objec…
提出问题 当我们自定义一个类时,打印这个类对象或者在交互模式下直接输入这个类对象按回车,默认显示出来的信息好像用处不大.如下所示 In [1]: class People: ...: def __init__(self, name, sex): ...: self.name = name ...: self.sex = sex ...: In [2]: p = People('xiaoming', 'male') In [3]: p Out[3]: <__main__.People at 0x7…
在交互式模式下,类中同时实现__str__()和__repr__()方法: 直接输入实例名称显示repr返回的类容: 用print打印实例名称显示str返回的内容: >>> class Test: ... def __repr__(self): ... return 'Test -> return repr' ... def __str__(self): ... return 'Test -> return str' ... >>> t = Test() &…
在讲解之前,我们先来了解下str和repr的区别:两者都是用来将数字,列表等类型的数据转化为字符串的形式.不同之处在于str更加类似于C语言中使用printf输出的内容,而repr输出的内容会直接将变量的类型连带着表现出来. 例如: >>> print (str('Python')) Python >>> print (repr('Python')) 'Python' 下面我通过一个例子进一步阐述__str__与__repr__两个魔法函数的区别. >>&g…
相关内容: __del__.__doc__.__dict__.__module__.__getitem__.__setitem__.__delitem__.__str__.__repr__.__call__ 首发:posted @ 2018-02-07 01:08 修改: 2018-02-14 13:57:增加__repr__ __del__: 被称为析构函数 当删除一个对象时,python解释器会默认调用__del__()方法 import gc class Dog(object): def…
使用python的魔法方法和time模块定制一个计时器的类 1.用time模块里的localtime()方法获取时间2.time.localtime返回struct_time格式3.表现你的类:__str__()和__repr__()先来看下__str__()和__repr__()魔法方法 >>> class A(): def __str__(self): return "我在学习python" >>> a = A() >>> pr…
Python 中的 __str__ 与 __repr__ 到底有什么差别   很多时候我们自己编写一个类,在将它的实例在终端上打印或查看的时候,我们往往会看到一个不太满意的结果. 类默认转化的字符串基本没有我们想要的一些东西,仅仅包含了类的名称以及实例的 ID (理解为 Python 对象的内存地址即可).虽说这总比没有好,但确实是没什么用处啊. 所以,我们可能会手动打印对象的一些属性或者是在类里自己实现一个方法来返回我们需要的信息. 这没有什么不对的地方,但是我们可以使用更 Pythonic…
Django---图书管理系统,一对多(外键设置),__str__和__repr__的区别,进阶版项目说明简介.模版语言if ... else ..endif 一丶__str__ 和 __repr__ class Publish(models.Model): pname = models.CharField(max_length=32, unique=True) paddr = models.CharField(max_length=32) # 这是调用 __str__ 方法打印的结果, __s…
目录 1. print( 坑的信息 ) 2. 开始填坑 2.1 上例子 2.2 关系与区别 Python 3.7.3 的官方文档 网上看到一个例子,运行了一下 简单地说 1. print( 坑的信息 ) 挖坑时间:2019/04/07 明细 坑的编码 内容 Py023-3 __str__ 与 __repr__ 的区别 2. 开始填坑 2.1 上例子 >>> class A(object): ... def __str__(self): ... return "this is _…
__repr__和__str__用于显示,__str__是面向用户的,而__repr__面向coder[调试与开发] repr(默认交互式回显)[来自python入门] str(也就是打印语句) 一般用途 输出的话先调用__str__,通常返回时字符串显示, 打印操作会先尝试__str__和str内置函数(print运行的内部等价形式)通常返回用户一个友好显示 __repr__用于所有其他环境之中:用于交互模式下提示回应以及repr函数,如果没有使用__str__,会使用print和str,通常…
isinstance(obj,cls) 检查是否obj是否是类 cls 的对象 #对象与类之间的关系 判断第一个参数是否是第二个参数的实例 # 身份运算 # 2 == 3 # 值是否相等# 2 is 3 # 内存地址是否相等class A:passclass B(A):passclass C(B):passc = C()print(isinstance(c,A)) #True # 包含继承关系的判断print(type(B) is B) #Falseprint(type(B) is A) #Fa…