__repr__与__str__】的更多相关文章

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> # 看到了么?上面打印类对象并不是很友好,显示的是对象…
Python中__repr__和__str__区别 看下面的例子就明白了 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 0x7fa91c3…
__repr__和__str__都是python中的特殊方法,都是用来输出实例对象的,如果没有定义这两个方法在打印的时候只会输出实例所在的内存地址 这种方式的输出没有可读性,并不能直观的体现实例.python提供了__repr__和__str__这两种方法来改进,如下: 在第二个例子中第一次直接输出实例并没有返回str,只改变了print的输出,由此可见__repr__改变的是所有的输出,而__str__改变的是print输出,所以当我们没有重构__str__只重构了__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> # 看到了么?上面打印类对象并不是很友好,显示的是对象…
首先我们来举个例子,定义一个长方行类Cuboid,长为x,宽为y,高为z class Cuboid: def __init__(self, x = 3, y = 1, z = 2): self.x = x self.y = y self.z = z 默认长为3,宽为1,高为2,让我们试图打印一下这个类 print(Cuboid()) 控制台可能会输出: <__main__.Cuboid object at 0x0000025EE2A9AA90> 但是如果在类种实现__repr__或者__str…
看下面的例子就明白了 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> # 看到了么?上面打印类对象并不…
示例: 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> # 看到了么?上面打印类对象并不是很友好,显示…
>>> class Student(object):... def __init__(self, name):... self.name = name... def __str__(self):... return 'Student object (name: %s)' % self.name...>>> s = Student('Michael')>>> s<__main__.Student object at 0x00000000022073…
__repr__,被内置函数repr用于把一个对象用"官方"的字符串形式表示出来(终端友好)    1.值传给eval()来返回一个对象的字符串表示形式    2.否则返回一个尖括号括起来的字符串,包含了对象类型的名称和附加的信息通常包括对象的名称和地址    3.一个类可以通过 __repr__方法来控制它的实例返回内容(也就是以上两点都通可以通过__repr__方法来定制)    4.返回 Unicode 字符串(str 类型)    __str__,被str(object) 和内…
str 和 repr 方法:是自定义类的字符串描述,这两种都是比较 Pythonic 的方式去控制对象转化为字符串的方式. 调用这两个方法,返回的都是字符串.但是这两个方法又有一些区别 ** 1 两种方法单独存在的情况**两种方法单独存在,都是返回的字符串,看以下实例 class A(): def __str__(self): return "__str__" a = A() print(a) 返回值: __str__ class A(): def __repr__(self): re…
repr(object) 返回一个可以用来表示对象的可打印字符串首先,尝试生成这样一个字符串,将其传给 eval()可重新生成同样的对象 否则,生成用尖括号包住的字符串,包含类型名和额外的信息(比如地址) 一个类(class)可以通过 __repr__() 成员来控制repr()函数作用在其实例上时的行为. str([object]) 返回一个可以用来表示对象的可打印的友好的字符串.对字符串,返回本身. 没有参数,则返回空字符串 对类,可通过 __str__() 成员控制其行为.该成员不存在,则…
看下面的例子就明白了 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__和__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…
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…
1.__str__ 首先介绍__str__ class Students(object): def __init__(self, *args): self.names = args # def __str__(self): # return str(self.names) # __repr__ = __str__ ss = Students('hyq','ysy') ss >>><__main__.Students at 0x2075a779828> 打印类对象显示的是对象的…
相关内容: __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…
__str__()__repr__()__len__() str() 转字符串repr() 让字符原形毕露的方法len() 计算长度 内置的方法很多,但是并不是全部都在object中,比如len(),__len__(),比如说数字,时间,还有对象都是无法计算长度 # __del__ 析构函数 # 删除,python解释器本身也会自动删除 class A: def __del__(self): print("执行我啦") a = A() # del a # 这里不些括号也行 del(a)…
交互模式下调用对象的__repr__()方法,这个方法表示的是一个编码 >>> u"国庆节快乐"u'\u56fd\u5e86\u8282\u5feb\u4e50' 用print+对象是调用对象的__str__方法>>> print u"国庆节快乐"国庆节快乐>>> 定义一个类,重写__repr__和__str__方法 >>> class P():...     def __repr__(self…
1.%s,%r的区别 在进行格式化输出时,%r 与 %s 的区别就好比 repr() 函数处理对象与 str() 函数处理对象的差别. %s ⇒ str(),比较智能: %r ⇒ repr(),处理较为简单和直接: 处理一些简单对象时,二者几乎没有差别,本文重点列举一些二者的差异化用法: 1.1 处理字符串时 >> s = 'world' >> print('hello %s'%s) hello world >> print('hello %r'%s) hello 'w…
目录: 一. __getattribute__ 二.__str__,__repr__,__format__ 三.__doc__ 四.__module__和__class__ 一. __getattribute__                                                                class Foo: def __init__(self,x): self.x=x def __getattr__(self, item): print('执行…
__call__ 方法 __call__ 是当对象被调用时会调用的方法,允许一个对象(类的实例等)像函数一样被调用,也可以传入参数. 1 class Foo(): 2 def __init__(self, x, y): 3 self.x = x 4 self.y = y 5 6 def __call__(self, m, n): 7 print('x is %s, y is %s, m is %s, n is %s' % (self.x, self.y, m, n)) 8 9 Foo(1, 2)…
目录 __str__ __repr__ __str__ 打印时触发 class Foo: pass obj = Foo() print(obj) <__main__.Foo object at 0x10d2b8f98> dic = {'a': 1} # d = dict({'x':1}) print(dic) {'a': 1} obj和dic都是实例化的对象,但是obj打印的是内存地址,而dic打印的是有用的信息,很明显dic的打印是非常好的 class Foo: def __init__(s…
__str__,__repr__ __str__:控制返回值,并且返回值必须是str类型,否则报错 __repr__:控制返回值并且返回值必须是str类型,否则报错 __repr__是__str__的替代品,如果str存在,直接按str的返回值,返回信息,不会执行repr,如果不存在,会执行repr,并得到repr的返回值 class Foo: def __init__(self,name,age): self.name = name self.age = age # def __str__(s…
类的内置方法 它与内置函数有紧密的联系,有的内置函数就是调用的内置方法. 在顶级父类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…
反射 反射用到的mmp模块 def wahaha():print('wahaha') class QQxing: def __init__(self,name): self.name = name def ADCa(self): print('in ADCa',self.name) # a # b # wahaha # QQxing # getattr('a') import sys print(sys.modules) print(sys.modules[__name__]) print(ge…
关于len, 如果x是一个内置类型的实例,那么len(x)的速度回非常快,背后的原因是CPython会直接从一个C结构体里读取对象的长度,完全不用调用任何方法,获取一个集合中的元素的数量是一个很常见的操作,在str\list\memoryview等类型上,这个操作必须高效. 换句话说,len之所以不是一个普通方法,是为了让Python自带的数据结构可以走后门,abs也是同理. 但是多亏了他是特殊方法,我们也可以把len用于自定义数据类型.这种处理方式在保持内置类型的效率和保证语言的一致性之间找到…
class School: def __init__(self,name,addr,type): self.name=name self.addr=addr self.type=type def __repr__(self): return 'School(%s,%s)' %(self.name,self.addr) def __str__(self): return '(%s,%s)' %(self.name,self.addr) def __add__(self, other): retur…
看下面的例子就明白了 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> # 看到了么?上面打印类对象并不…