热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python重载_Python如何重载?

192018-07-2123:49:3308:001这两天升级django,从1.8升级到支持python2.7的最后一个版本1.11.发现Usinguser.is_authen

19

2018-07-21 23:49:33 +08:00   1

这两天升级 django , 从 1.8 升级到 支持 python2.7 的最后一个版本 1.11.

发现

"Using user.is_authenticated() and user.is_anonymous() as a method "

"is deprecated. Remove the parentheses to use it as an attribute.",

之前的使用方法:user.is_authenticated()

现在的使用方法:user.is_authenticated

我看了一下 django 的实现方法

```

class User():

@property

def is_authenticated(self):

return CallableFalse

```

首先用 property 把它变成了一个属性,但是返回的不是一个 bool, 是一个有__call__ 的对象

CallableFalse = CallableBool(False)

```

class CallableBool:

"""

An boolean-like object that is also callable for backwards compatibility.

"""

do_not_call_in_templates = True

def __init__(self, value):

self.value = value

def __bool__(self):

return self.value

def __call__(self):

warnings.warn(

"Using user.is_authenticated() and user.is_anonymous() as a method "

"is deprecated. Remove the parentheses to use it as an attribute.",

RemovedInDjango20Warning, stacklevel=2

)

return self.value

def __nonzero__(self): # Python 2 compatibility

return self.value

def __repr__(self):

return 'CallableBool(%r)' % self.value

def __eq__(self, other):

return self.value == other

def __ne__(self, other):

return self.value != other

def __or__(self, other):

return bool(self.value or other)

def __hash__(self):

return hash(self.value)

```

你觉得这种实现方式 怎么样?

出了 这种需要兼容的代码, 再也没有见过 类似的代码了。



推荐阅读
  • 深入解析 Django 中用户模型的自定义方法与技巧 ... [详细]
  • 深入解析Java中HashCode的功能与应用
    本文深入探讨了Java中HashCode的功能与应用。在Java中,HashCode主要用于提高哈希表(如HashMap、HashSet)的性能,通过快速定位对象存储位置,减少碰撞概率。文章详细解析了HashCode的生成机制及其在集合框架中的作用,帮助开发者更好地理解和优化代码。此外,还介绍了如何自定义HashCode方法以满足特定需求,并讨论了常见的实现误区和最佳实践。 ... [详细]
  • 在 Python 中,魔法方法 `__dict__` 和 `__getattr__` 具有重要的作用和灵活的应用。`__dict__` 是一个用于存储对象属性的字典,其中键为属性名,值为对应的属性值。通过 `__dict__`,可以动态地访问和修改对象的属性。而 `__getattr__` 方法则在尝试访问对象中不存在的属性时被调用,提供了一种优雅的处理方式,避免了属性访问错误。这两个魔法方法在实现复杂的数据结构和动态行为时尤为有用。 ... [详细]
  • 本文详细探讨了Java集合框架的使用方法及其性能特点。首先,通过关系图展示了集合接口之间的层次结构,如`Collection`接口作为对象集合的基础,其下分为`List`、`Set`和`Queue`等子接口。其中,`List`接口支持按插入顺序保存元素且允许重复,而`Set`接口则确保元素唯一性。此外,文章还深入分析了不同集合类在实际应用中的性能表现,为开发者选择合适的集合类型提供了参考依据。 ... [详细]
  • 开发心得:深入探讨Servlet、Dubbo与MyBatis中的责任链模式应用
    开发心得:深入探讨Servlet、Dubbo与MyBatis中的责任链模式应用 ... [详细]
  • 本文探讨了如何使用Xutils3框架实现JSON数据在服务器端的传输与接收解析。通过构建JSON对象并添加所需参数,如 `person.put("pc", 2.0)`,详细介绍了从客户端发送请求到服务器接收并解析JSON数据的完整流程。此外,还提供了优化建议,以提高数据传输的效率和安全性。 ... [详细]
  • 本文深入分析了Django框架中模型应用与非模型应用的区别与应用场景,详细对比了两者在数据处理、性能表现及开发灵活性等方面的特点。同时,文章还介绍了如何在视图函数中有效利用这些特性,结合PostgreSQL、MySQL、SQLite3和Oracle等不同数据库的配置与使用方法,为开发者提供了全面的参考指南。 ... [详细]
  • 招聘 | 完美世界信息安全部期待你的加入~
    招聘 | 完美世界信息安全部期待你的加入~ ... [详细]
  • DjangoForeignKey关联查询-今天用到ForeignKey忘记怎么用了,网上查了一大堆写的乱七八糟,最后终于登录了django官网看了以下文档,真是写的简单明了,搞不懂 ... [详细]
  • Django 学习笔记(三)
    在模板文件中,还能嵌套入模板标签,做一些特殊处理,例如流程控制,下面将简单介绍下模板标签,主要介绍if和for ... [详细]
  • 使用django命令pythonmanage.pyshell_plus时,在闲置几分钟后发送新命令时,经 ... [详细]
  • 终终终终终终终终终终于来福利了,最近经济也不太景气,涛哥手头也紧张,不过还是的感谢这段时间粉丝们对我的不离不弃啊。直接给大家送一个苹果Ai ... [详细]
  • FBV代表func,也就是函数。CBV代表class,也就是类应用场景:登录验证.FBV写法:deflogin(request):dic{tag:N ... [详细]
  • 课程简介和学习安排1-1强力django+杀手级xadmin打造上线标准的在线教育平台试看第2章开发环境搭建-linux本章节将会带领大家在windows上通过虚拟机安装linux ... [详细]
  • node作为中转站转发php,Node.js作为中间层实现前后端分离
    2016年3月于乌镇零、用koa2实现前后端分离的点赞+1的功能(欢迎clone和star)一、前后端不分离存在什么问题之前做一个PythondjangojQuery ... [详细]
author-avatar
无极圈晨曦
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有