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…
__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…
__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更加类似于C语言中使用printf输出的内容,而repr输出的内容会直接将变量的类型连带着表现出来. 例如: >>> print (str('Python')) Python >>> print (repr('Python')) 'Python' 下面我通过一个例子进一步阐述__str__与__repr__两个魔法函数的区别. >>&g…
一.反射 反射类中的变量 反射对象中的变量 反射模块中的变量 反射本文件中的变量 .定义:使用字符串数据类型的变量名 来获取这个变量的值 例如: name = 'xiaoming' print(name) # xiaoming print('name') # name 平时我们要想获取'xiaoming'这个值,要用name去获取,但是如果想用字符串'name' 获取这个值呢, 就需要用到反射. .反射应用的场景(就是把接收的字符串转换成变量的名字便于使用) ,input 用户输入的如果是a,那…
1. 没定义__str__() print的时候得不到自己想要的东西 类默认转化的字符串基本没有我们想要的一些东西,仅仅包含了类的名称以及实例的 ID (理解为 Python 对象的内存地址即可).虽说这总比没有好,但确实是没什么用处啊. 所以,我们可能会手动打印对象的一些属性或者是在类里自己实现一个方法来返回我们需要的信息 2.使用 __str__ 实现类到字符串的转化 3.另一个就是 __repr__ 方法.后者的工作方式与前者类似,但是它被调用的时机不同 另外,列表以及字典等容器总是会使用…
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…
相关内容: __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…
反射: 使用字符串数据类型的变量名来使用变量 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__]…
__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…
一.反射 通过字符串的形式操作对象相关的属性.(使用字符串数据类型的变量名来获取这个变量的值) Python中的一切事物都是对象(都可以使用反射) 反射类中的变量 反射对象中的变量 反射模板中的变量 反射本文件中的变量 用反射的场景: input 网络 文件 #hasattr def hasattr(*args, **kwargs): # real signature unknown """ Return whether the object has an attribute…
内建函数str()和repr() (representation,表达,表示)或反引号操作符(``)可以方便地以字符串的方式获取对象的内容.类型.数值属性等信息.str()函数得到的字符串可读性好(故被print调用),而repr()函数得到的字符串通常可以用来重新获得该对象,通常情况下 obj==eval(repr(obj)) 这个等式是成立的.这两个函数接受一个对象作为其参数,返回适当的字符串. 事实上repr()和``做一样的事情,返回一个对象的“官方”字符串表示.其结果绝大多数情况下(不…
本文参考自: 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的魔法方法和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有一个内置的函数叫repr,它能把一个对象用字符串的形式表达出来以便辨认,这就是“字符串表示形式”.repr就是通过__repr__这个特殊方法来得到一个对象的字符串表示形式.如果没有实现__repr__,当我们再控制台里打印一个变量的实例时,得到的字符串可能会是<__main__.Object at 0x14af07dbe80>,这个表示的是打印的对象,以及对象的内存地址 现在让我们看看__str__和__repr__这两个方法有什么区别 首先定义一个类 class Vector…
Python 中的 __str__ 与 __repr__ 到底有什么差别   很多时候我们自己编写一个类,在将它的实例在终端上打印或查看的时候,我们往往会看到一个不太满意的结果. 类默认转化的字符串基本没有我们想要的一些东西,仅仅包含了类的名称以及实例的 ID (理解为 Python 对象的内存地址即可).虽说这总比没有好,但确实是没什么用处啊. 所以,我们可能会手动打印对象的一些属性或者是在类里自己实现一个方法来返回我们需要的信息. 这没有什么不对的地方,但是我们可以使用更 Pythonic…
如果要把一个类的实例变成 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会得到:<_…
当打印一个类的实例时,返回的字符串是对象的地址信息,如<__main__.Student object at 0x109afb310>,很不好看 可通过在类内定义__str__(),这样打印实例时就会返回一个好看的字符串,而且容易看出实例内部重要的数据 定义__str__() class Student(object): def __init__(self, name): self.name = name def __str__(self): return 'Student object (n…
类的内置方法 它与内置函数有紧密的联系,有的内置函数就是调用的内置方法. 在顶级父类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…
1.__str__是个内置的方法,无需使用者去调用,其会在满足某一条件时自动触发.那么要触发它运行都有哪些条件呢? 有三种条件,分别为:print , str , %s 2.__repr__同样是个内置方法,无需使用者去调用,其会在满足某一条件时自动触发.那么要触发它运行都有哪些条件呢? 有以下种条件,分别为:print , str , %s , repr , %r 3.注意:__str__ 与 __repr__ 的返回值都要求必须是个字符串类型,那么这些条件触发两个方法的先后顺序以及混合使用…
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…
提出问题 当我们自定义一个类时,打印这个类对象或者在交互模式下直接输入这个类对象按回车,默认显示出来的信息好像用处不大.如下所示 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…
目录 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 _…
在交互式模式下,类中同时实现__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__()方法和__repr__()方法的返回值只能是字符串! 关于调用两种方法的时机 使用print()时 使用%s和f'{}'拼接对象时 使用str(x)转换对象x时 在上述三种场景中,会优先调用对象的__str__()方法:若没有,就调用__repr__()方法…
__repr__和__str__用于显示,__str__是面向用户的,而__repr__面向coder[调试与开发] repr(默认交互式回显)[来自python入门] str(也就是打印语句) 一般用途 输出的话先调用__str__,通常返回时字符串显示, 打印操作会先尝试__str__和str内置函数(print运行的内部等价形式)通常返回用户一个友好显示 __repr__用于所有其他环境之中:用于交互模式下提示回应以及repr函数,如果没有使用__str__,会使用print和str,通常…
obj.__ str __ ()是面向用户的,该方法将实例转换为一个字符 obj.__ repr __ ()面向程序员,该方法返回一个实例的代码表示形式,通常用来重新构造这个实例,repr()函数返回的字符串,和我们使用交互式显示的值是一样的,__ repr __ ()生成的文本字符串标准做法是需要让eval(repr(x)) == x为真 obj.__ format __:自定制格式化字符串 __str__和__repr__区别与联系: 上述两个方法返回值必须是字符串,否则抛出异常: 这两个方…
很多时候我们在创建一个类的时候,在终端打印类或者查看的时候一般都不会得到一个太满意的结果 class T: def __init__(self): self.color="red" self.count = 2 t = T()t >>> <T object at 0x0000000003444E10> print(t) >>> <T object at 0x0000000003444E10> 类转化为字符串,直接打印结果一般都…