对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实现求两个csv文件交集的方法
Sep 06 Python
Python使用文件锁实现进程间同步功能【基于fcntl模块】
Oct 16 Python
django admin 后台实现三级联动的示例代码
Jun 22 Python
使用Python更换外网IP的方法
Jul 09 Python
Python3实现的判断环形链表算法示例
Mar 07 Python
Python+opencv 实现图片文字的分割的方法示例
Jul 04 Python
Python使用正则表达式分割字符串的实现方法
Jul 16 Python
python 实现dict转json并保存文件
Dec 05 Python
python sitk.show()与imageJ结合使用常见的问题
Apr 20 Python
python进行OpenCV实战之画图(直线、矩形、圆形)
Aug 27 Python
Python文件的操作示例的详细讲解
Apr 08 Python
pandas求平均数和中位数的方法实例
Aug 04 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+mysqli实现将数据库中一张表信息打印到表格里的方法
2015/01/28 PHP
php上传中文文件名乱码问题处理方案
2015/02/03 PHP
YII框架中搜索分页jQuery写法详解
2016/12/19 PHP
PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】
2017/10/07 PHP
基于jquery实现的移入页面上空文本框时,让它变为焦点,移出清除焦点
2011/07/26 Javascript
Javascript实现重力弹跳拖拽运动效果示例
2013/06/28 Javascript
检查输入的是否是数字使用keyCode配合onkeypress事件
2014/01/23 Javascript
jQuery检测返回值的数据类型
2015/07/13 Javascript
node.js实现爬虫教程
2020/08/25 Javascript
利用Javascript实现BMI计算器
2016/08/16 Javascript
js实现页面刷新滚动条位置不变
2016/11/27 Javascript
JS正则匹配中文的方法示例
2017/01/06 Javascript
原生JS+Canvas实现五子棋游戏
2020/05/28 Javascript
jQuery+vue.js实现的九宫格拼图游戏完整实例【附源码下载】
2017/09/12 jQuery
JS写谷歌浏览器chrome的外挂实例
2018/01/11 Javascript
JS字符串常用操作方法实例小结
2019/06/24 Javascript
layui当点击文本框时弹出选择框,显示选择内容的例子
2019/09/02 Javascript
详解使用mocha对webpack打包的项目进行"冒烟测试"的大致流程
2020/04/27 Javascript
将Vue组件库更换为按需加载的方法步骤
2020/05/06 Javascript
python采用django框架实现支付宝即时到帐接口
2016/05/17 Python
Python内置函数—vars的具体使用方法
2017/12/04 Python
python组合无重复三位数的实例
2018/11/13 Python
pandas 空数据处理方法详解
2019/11/02 Python
python如何使用代码运行助手
2020/07/03 Python
Python  Asyncio模块实现的生产消费者模型的方法
2021/03/01 Python
世界上最大的售后摩托车零配件超市:J&P Cycles
2017/12/08 全球购物
美津浓美国官网:Mizuno美国
2018/08/07 全球购物
最好的意大利皮夹克:D’Arienzo
2018/12/04 全球购物
英国折扣零售连锁店:QD Stores
2018/12/08 全球购物
2014年度党员自我评议
2014/09/13 职场文书
合伙开公司协议书范本
2014/10/28 职场文书
退货证明模板
2015/06/23 职场文书
vue-cropper插件实现图片截取上传组件封装
2021/05/27 Vue.js
新手入门Jvm-- JVM对象创建与内存分配机制
2021/06/18 Java/Android
django中websocket的具体使用
2022/01/22 Python
Python制作表白爱心合集
2022/01/22 Python