对Python2与Python3中__bool__方法的差异详解


Posted in Python onNovember 01, 2018

学习Python面向对象编程的时候,遇到了一个很有意思的小问题。Python的__bool__方法不起作用的问题。

我反复读了我手中的教程,确认了我写的代码应该管用。可是在测试的时候却一直不通过,后来发现我实现的__bool__方法似乎并不是Python本身的接口。

代码如下:

class Demo():

def __init__(self,value = 0):

  self.value = value

def __bool__(self):

  return bool(self.value > 5)


obj = Demo()

obj.value = 0

if obj:

print("yes")

else:

print("no")

print(bool(obj))

这几天使用Win10下面的bash用着比较顺手,我就一直在这个环境中进行程序的调试。

测试的结果如下:

grey@DESKTOP-3T80NPQ:/mnt/e/01_workspace/02_programme_language/03_python/03_OOP/2017/08/16$python bool_demo.py

yes

True

这多少有点奇怪,居然跟我预期的不一样。尝试直接调用bool方法发现根本不存在之后,我猜测这或许是py2与py3的一点差异。Win10的Linux子系统中python版本是2.X,具体如下:

grey@DESKTOP-3T80NPQ:/mnt/e/01_workspace/02_programme_language/03_python/03_OOP/2017/08/16$python -V

Python 2.7.6

我在win10上安装的Python版本是3.X,切换CMD只有测试如下:

E:\01_workspace\02_programme_language\03_python\03_OOP\2017\08\16>pythonbool_demo.py

no

False


E:\01_workspace\02_programme_language\03_python\03_OOP\2017\08\16>python-V

Python 3.6.0

最终结果符合预期!

看起来,这应该是Python3与Python2之间的一点接口上的差异。如果从好用的角度考虑,自然是具有这种接口的Python3更加人性化一些。这会给程序员更大的自由度,也能够实现与Python本身集成度更高的代码。

以上这篇对Python2与Python3中__bool__方法的差异详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用python绘制人人网好友关系图示例
Apr 01 Python
Python中的tuple元组详细介绍
Feb 02 Python
Python中遍历字典过程中更改元素导致异常的解决方法
May 12 Python
在Python web中实现验证码图片代码分享
Nov 09 Python
Django中使用Celery的方法示例
Nov 29 Python
Python OpenCV之图片缩放的实现(cv2.resize)
Jun 28 Python
Django-Model数据库操作(增删改查、连表结构)详解
Jul 17 Python
Django中create和save方法的不同
Aug 13 Python
Python使用turtle库绘制小猪佩奇(实例代码)
Jan 16 Python
Pycharm plot独立窗口显示的操作
Dec 11 Python
Opencv+Python识别PCB板图片的步骤
Jan 07 Python
pycharm安装深度学习pytorch的d2l包失败问题解决
Mar 25 Python
对Python中for复合语句的使用示例讲解
Nov 01 #Python
使用Python获取网段IP个数以及地址清单的方法
Nov 01 #Python
使用Python获取并处理IP的类型及格式方法
Nov 01 #Python
使用Python进行目录的对比方法
Nov 01 #Python
详解python Todo清单实战
Nov 01 #Python
在Mac下使用python实现简单的目录树展示方法
Nov 01 #Python
对numpy中二进制格式的数据存储与读取方法详解
Nov 01 #Python
You might like
php.ini中文版
2006/10/09 PHP
php学习笔记之 函数声明(二)
2011/06/09 PHP
用PHP写的基于Memcache的Queue实现代码
2011/11/27 PHP
php中的动态调用实例分析
2015/01/07 PHP
phpmailer绑定邮箱的实现方法
2016/12/01 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
php tpl模板引擎定义与使用示例
2019/08/09 PHP
Locate a File Using a File Open Dialog Box
2007/06/18 Javascript
由JavaScript技术实现的web小游戏(不含网游)
2010/06/12 Javascript
jQuery DOM插入节点操作指南
2015/03/03 Javascript
jquery实现的淡入淡出下拉菜单效果
2015/08/25 Javascript
基于javascript实现泡泡大冒险网页版小游戏
2016/03/23 Javascript
在线引用最新jquery文件的实现方法
2016/08/26 Javascript
node.js中express-session配置项详解
2017/05/31 Javascript
JavaScript中三个等号和两个等号你了解多少
2017/07/04 Javascript
微信小程序ajax实现请求服务器数据及模版遍历数据功能示例
2017/12/15 Javascript
ES6函数和数组用法实例分析
2020/05/23 Javascript
Jquery如何使用animation动画效果改变背景色的代码
2020/07/20 jQuery
javascript递归函数定义和用法示例分析
2020/07/22 Javascript
python MySQLdb Windows下安装教程及问题解决方法
2015/05/09 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
2018/06/20 Python
Django代码性能优化与Pycharm Profile使用详解
2018/08/26 Python
keras分类模型中的输入数据与标签的维度实例
2020/07/03 Python
诗普兰迪官方网站:Splendid
2018/09/18 全球购物
新西兰杂志订阅:isubscribe
2019/08/26 全球购物
介绍一下ICMP(Internet Control Message Protocol)Internet控制信息协议
2016/11/26 面试题
几个Linux面试题笔试题
2012/12/01 面试题
机工车间主任岗位职责
2014/03/05 职场文书
最新结婚典礼主持词
2014/03/14 职场文书
体育个人工作总结
2015/02/09 职场文书
人与自然的观后感
2015/06/18 职场文书
青年岗位能手事迹材料(2016推荐版)
2016/03/01 职场文书
python爬虫之利用selenium模块自动登录CSDN
2021/04/22 Python
Python使用scapy模块发包收包
2021/05/07 Python
Java循环队列与非循环队列的区别总结
2021/06/22 Java/Android
instantclient客户端 连接oracle数据库
2022/04/26 Oracle