对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脚本来删除指定容量以上的文件的教程
May 04 Python
pygame游戏之旅 添加游戏介绍
Nov 20 Python
python覆盖写入,追加写入的实例
Jun 26 Python
django如何自己创建一个中间件
Jul 24 Python
pycharm中显示CSS提示的知识点总结
Jul 29 Python
python实现BP神经网络回归预测模型
Aug 09 Python
python3 map函数和filter函数详解
Aug 26 Python
解决Tensorboard 不显示计算图graph的问题
Feb 15 Python
Python任务调度利器之APScheduler详解
Apr 02 Python
解决 jupyter notebook 回车换两行问题
Apr 15 Python
学习Python爬虫的几点建议
Aug 05 Python
Python 把两层列表展开平铺成一层(5种实现方式)
Apr 07 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
PHPShop存在多个安全漏洞
2006/10/09 PHP
探讨:web上存漏洞及原理分析、防范方法
2013/06/29 PHP
php获取从百度搜索进入网站的关键词的详细代码
2014/01/08 PHP
smarty自定义函数htmlcheckboxes用法实例
2015/01/22 PHP
PHP获取数组长度或某个值出现次数的方法
2015/02/11 PHP
在textarea中显示html页面的javascript代码
2007/04/20 Javascript
javascript jq 弹出层实例
2013/08/25 Javascript
JS生成随机字符串的多种方法
2014/06/10 Javascript
封装好的一个万能检测表单的方法
2015/01/21 Javascript
解析JavaScript的ES6版本中的解构赋值
2015/07/28 Javascript
实例讲解jquery中mouseleave和mouseout的区别
2016/02/17 Javascript
JavaScript的设计模式经典之建造者模式
2016/02/24 Javascript
jQuery中设置form表单中action值的实现方法
2016/05/25 Javascript
javascript 数组的正态分布排序的问题
2016/07/31 Javascript
基于hover的用法实例(推荐)
2017/07/04 Javascript
Node.js 实现远程桌面监控的方法步骤
2019/07/02 Javascript
JS/jQuery实现超简单的Table表格添加,删除行功能示例
2019/07/31 jQuery
[02:54]辉夜杯主赛事第二日败者组 iG.V赛后采访
2015/12/26 DOTA
phpsir 开发 一个检测百度关键字网站排名的python 程序
2009/09/17 Python
OpenCV实现人脸识别
2017/04/07 Python
Python使用asyncio包处理并发详解
2017/09/09 Python
python+selenium实现登录账户后自动点击的示例
2017/12/22 Python
python常用函数与用法示例
2019/07/02 Python
python数据归一化及三种方法详解
2019/08/06 Python
Python3使用PySynth制作音乐的方法
2019/09/09 Python
Python读入mnist二进制图像文件并显示实例
2020/04/24 Python
如何在vscode中安装python库的方法步骤
2021/01/06 Python
HTML5自定义元素播放焦点图动画的实现
2019/09/25 HTML / CSS
意大利在线药房:shop-farmacia.it
2019/03/12 全球购物
车库门开启器、遥控器和零件:Chamberlain
2019/04/09 全球购物
EMPHASIS艾斐诗官网:周生生旗下原创精品珠宝品牌
2020/12/17 全球购物
大二自我鉴定范文
2013/10/05 职场文书
学生自我鉴定
2013/12/18 职场文书
关于祖国的演讲稿
2014/05/04 职场文书
2015年护士节活动策划方案
2015/05/04 职场文书
Html5页面播放M4a音频文件
2021/03/30 HTML / CSS