__rept__和__str__】的更多相关文章

最近一下子学了很多的知识点,导致我有点没反应过来,粗略的在草稿纸记了点自己的想法,趁休息的时间将它敲到博客里面去,免得丢失,这一篇写的挺废话的,有点啰嗦,本篇的重点是第二段程序后开始的总结和后面的几个细节问题. 关于__repr__和__str__这连个东西,我最开始就感觉有点难以理解,百度来的东西看了很多遍,定义都能背下来了,随口一说就是一个给机器看的一个给人看的,但是感觉只理解了最表面,当然不是网上大佬给的答案不够好,而是某些东西还是需要自己去思考,然后有一番自己的理解,然后写点程序验证下,…
__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 试试: >>>…
repr(object) 返回一个可以用来表示对象的可打印字符串首先,尝试生成这样一个字符串,将其传给 eval()可重新生成同样的对象 否则,生成用尖括号包住的字符串,包含类型名和额外的信息(比如地址) 一个类(class)可以通过 __repr__() 成员来控制repr()函数作用在其实例上时的行为. str([object]) 返回一个可以用来表示对象的可打印的友好的字符串.对字符串,返回本身. 没有参数,则返回空字符串 对类,可通过 __str__() 成员控制其行为.该成员不存在,则…
For ( __str__ ),we going to see a example ... and find who is working for ... #!/usr/bin/python class Person(object): def __init__(self,name,gender): self.name = name self.gender = gender if __name__ == '__main__': p = Person('Frank',23) print p See,…
__str__是被print函数调用的,一般都是return一个什么东西.这个东西应该是以字符串的形式表现的.如果不是要用str()函数转换.当你打印一个类的时候,那么print首先调用的就是类里面的定义的__str__ class Person(object): def __init__(self, name, job = None, pay = 0): self.name = name self.job = job self.pay = pay def lastName(self): ret…
一:string相关:__str__(),__repr__(),__format__() str方法更面向人类阅读,print()使用的就是str repr方法更面对python,目标是希望生成一个放入eval方法就能够执行的python语句字符串 注意,不要一看到format方法就认为他是用来取代%赋值的 *在里format方法可通过后面的!r与!s来指定使用repr还是str,即此时就不是用的format方法了,而是调用的repr或者str format有两种参数形式: 1:"",…
出错原因: 用户表是Django中核心的表,当这个表类字段中有一个这样的函数 def __str__(self): return self.name 在Django用户表设计时候有个字段容易犯这个失误,虽然表字段约束没错 name = models.CharField(max_length=30, null=True, blank=True, verbose_name='姓名') 也就是说这个字段可以为空,也就是说用 __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> # 看到了么?上面打印类对象并不…
一.内置函数补充 1.isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo(object): pass obj = Foo() print(isinstance(obj, Foo)) #结果为True 2.issubclass(sub, super)检查sub类是否是 super 类的派生类 class Foo(object): pass class Bar(Foo): pass print(issubclass(Bar, Foo)) #结果为True…
在讲解之前,我们先来了解下str和repr的区别:两者都是用来将数字,列表等类型的数据转化为字符串的形式.不同之处在于str更加类似于C语言中使用printf输出的内容,而repr输出的内容会直接将变量的类型连带着表现出来. 例如: >>> print (str('Python')) Python >>> print (repr('Python')) 'Python' 下面我通过一个例子进一步阐述__str__与__repr__两个魔法函数的区别. >>&g…
反射:通过字符串来访问到所对应的值(反射到真实的属性上). eg: class Foo: x=1 def __init__(self,name): self.name=name def f1(self): print('from f1') # print(Foo.x) #Foo.__dict__['x'] f=Foo('egon') # print(f.__dict__) # # #1: # print(f.name) #2: # print(f.__dict__['name']) #hasat…
__init__:当实例化一个类的时候,首相会执行__new__方法创建一个对象,接下来会执行__init__方法对对象的一些属性进行初始化. 所以如果对象有属性,一般会直接写在__init__方法里面: class Test: def __init__(self, a, b): self.a = a self.b = b test = Test(a, b) __str__:当实例化一个类之后,就有了一个对象的引用,如 test = Test() 这个时候如果直接print(test),输出的是…
#Author : Kelvin #Date : 2019/1/21 16:19 class App: def __init__(self,name): self.name=name # def __str__(self): # return "名字是%s"%self.name # def __repr__(self): # return "repr方法!" a=App("kelvin") print(a) """…
__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…
__str__: 在对象被打印的时候触发,可以用来定义对象被打印的输出格式 __del__:在对象被删除的时候触发,可以 用来回收对象以外的其他相关资源,比如系统资源等. __call__:在对象呗调用的时候触发. # -*- coding: utf-8 -*- """ __str__: 在对象被打印是自动触发,可以用来定义对象被打印时的输出信息 """ class People: def __init__(self, name, age): s…
一.反射 反射类中的变量 反射对象中的变量 反射模块中的变量 反射本文件中的变量 .定义:使用字符串数据类型的变量名 来获取这个变量的值 例如: name = 'xiaoming' print(name) # xiaoming print('name') # name 平时我们要想获取'xiaoming'这个值,要用name去获取,但是如果想用字符串'name' 获取这个值呢, 就需要用到反射. .反射应用的场景(就是把接收的字符串转换成变量的名字便于使用) ,input 用户输入的如果是a,那…
>>> 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…
1. 没定义__str__() print的时候得不到自己想要的东西 类默认转化的字符串基本没有我们想要的一些东西,仅仅包含了类的名称以及实例的 ID (理解为 Python 对象的内存地址即可).虽说这总比没有好,但确实是没什么用处啊. 所以,我们可能会手动打印对象的一些属性或者是在类里自己实现一个方法来返回我们需要的信息 2.使用 __str__ 实现类到字符串的转化 3.另一个就是 __repr__ 方法.后者的工作方式与前者类似,但是它被调用的时机不同 另外,列表以及字典等容器总是会使用…
''' 1什么是多态 多态指的是同一种/类事物的不同形态 2 为何要有多态 多态性:在多态的背景下,可以在不用考虑对象具体类型的前提下而直接使用对象 多态性的精髓:统一 多态性的好处: 1增加了程序的灵活性: 以不变应万变,不论对象千变万化,使用者都是同一种形式去调用 2增加了程序可扩展性 继承一个Animal类创建一个新的类,使用者无需更改自己的代码,还是用原来的方式调用 3 如何用多态 ''' ''' class Animal: def speak(self): pass class Peo…
一  反射 1.面向对象中的反射:通过字符串的形式操作对象的相关属性,python中一切事物都是属性(都可以使用反射) 四个可以实现自省<反射>的函数:hasattr /  getattr  / setattr  /delattr. class Teacher: school='oldboy' def __init__(self,name,age): self.name=name self.age=age def teach(self): print('%s teach'%self.name)…
__slots__ 为了达到限制的目的,Python允许在定义class的时候,定义一个特殊的__slots__变量,来限制该class实例能添加的属性. __str__  用这个命令定义方法,可以返回想要的字符串,但是容易看到实例内部重要的数据, 直接显示变量调用的不是__str__(),而是__repr__(),两者的区别是__str__()返回用户看到的字符串,而__repr__()返回程序开发者看到的字符串,也就是说,__repr__()是为调试服务的. 解决办法是再定义一个__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…
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> # 看到了么?上面打印类对象并不是很友好,显示的是对象…
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> 打印类对象显示的是对象的…
__str__()函数的作用: 不知道大家再写程序是,打印一个实例化对象时,打印的其实时一个对象的地址.而通过__str__()函数就可以帮助我们打印对象中具体的属性值,或者你想得到的东西. 因为再python中调用print()打印实例化对象时会调用__str__()如果__str__()中有返回值,就会打印其中的返回值. demo: class ss: def __init__(self,age,name): self.age = age self.name = name def __str…
#1 默认类里面默认提供的__str__方法,是返回类的内存地址class foo: def __init__(self): pass #2 修改类里面默认提供的__str__方法class fun: def __str__(self): return '自定制的对象显示方式' #这必须是要return(可以自己控制打印信息) def __repr__(self): return "返回repr" fo = foo()print(fo) #结果是<__main__.foo obj…
相关内容: __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版本为3.6,Python3.X的版本不可使用__unicode__()(python2.x可用),应改为__str__().…
__str__()__repr__()__len__() str() 转字符串repr() 让字符原形毕露的方法len() 计算长度 内置的方法很多,但是并不是全部都在object中,比如len(),__len__(),比如说数字,时间,还有对象都是无法计算长度 # __del__ 析构函数 # 删除,python解释器本身也会自动删除 class A: def __del__(self): print("执行我啦") a = A() # del a # 这里不些括号也行 del(a)…