博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django models中的\_\_repr__方法
阅读量:7221 次
发布时间:2019-06-29

本文共 1349 字,大约阅读时间需要 4 分钟。

先看个例子:

class D(object):    def __init__(self):        pass    def __str__(self):        return "__str__"    def __repr__(self):        return "__repr__"b = D()print(b.__repr__())print(b)

out:

__repr____str__

内建函数str()和repr() (representation,表达,表示)或反引号操作符(``)可以方便地以字符串的方式获取对象的内容、类型、数值属性等信息。

str()函数得到的字符串可读性好(故被print调用),而repr()函数得到的字符串通常可以用来重新获得该对象

通常情况下 obj==eval(repr(obj)) 这个等式是成立的。这两个函数接受一个对象作为其参数,返回适当的字符串。

事实上repr()和``做一样的事情,返回一个对象的“官方”字符串表示。其结果绝大多数情况下(不是所有)可以通过求值运算(内建函数eval())重新得到该对象。

str()则不同,它生成一个对象的可读性好的字符串表示,结果通常无法用eval()求值,但适合print输出。

为什么有了repr()还需要``?

Python中,有的操作符和函数是做同样的事情,原因是某些场合下函数会比操作符更适合使用,比如函数对象可作为参数传递。双星号(**)乘方运算和pow()内建函数都返回x的y次方.

Django中repr方法的使用

for p in Poll.objects.all():    print p

一个结果集就是一个可迭代对象.因此,可以通过一个循环来取出它的值,而使用对象的__repr__()方法打印出所有的P对象.

实用例子:

...field = cls.base_fields[field_name]#print(field.__repr__())if 'BooleanField' not in field.__repr__():    attr_dic = {'class':'form-control',                'placeholder':field.help_txt,}    # if field_name in disabled_fields:            attr_dic['disabled'] = True    field.widget.attrs.update(attr_dic)return ModelForm.__new__(cls)

其中:

  • BooleanField,一种字段类型,指布尔型,和NullBooleanField有区别,true/false,本类型不允许出现null。Blank=True
  • __new__:至少要有一个参数cls,代表要实例化的类,此参数在实例化时由Python解释器自动提供。__new__必须要有返回值,返回实例化出来的实例,这点在自己实现__new__时要特别注意,可以return父类__new__出来的实例,或者直接是object的__new__出来的实例。

转载地址:http://yoqym.baihongyu.com/

你可能感兴趣的文章
讲讲Linux系统工程师的职业规划
查看>>
列出文件目录结构
查看>>
C# ini文件读写类
查看>>
好文转载—程序员的禅修之路
查看>>
受限的文本框——限制可输入字符个数的文本框
查看>>
49th--Expanding-the Bit-Representation-of-a-Number
查看>>
android 获取本机IP地址
查看>>
lua 中关于时间戳和可读时间格式的一点记录
查看>>
cocos2d-js 项目编译
查看>>
String.subString引发的StringIndexOutOfBoundsException
查看>>
解读dbcp自动重连那些事
查看>>
Redis的三种启动方式
查看>>
nGrinder在大型组织中的实际布署和应用
查看>>
Spring系列之-Spring IOC容器设计:IOC容器初始化-Bean注册
查看>>
并发编程(二)——JAVA CAS原理深度分析
查看>>
call_user_func_array
查看>>
Struts2配置后跳转报错解决方法
查看>>
Android屏幕快照(or Android截屏)
查看>>
maven flexmojos 插件安装配置
查看>>
悲催的2011年!
查看>>