对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 实现堆排序算法代码
Jun 05 Python
python网络编程之文件下载实例分析
May 20 Python
python中使用序列的方法
Aug 03 Python
python简单线程和协程学习心得(分享)
Jun 14 Python
Python 字符串与数字输出方法
Jul 16 Python
Python重新加载模块的实现方法
Oct 16 Python
python进行文件对比的方法
Dec 24 Python
Python编写通讯录通过数据库存储实现模糊查询功能
Jul 18 Python
python 类的继承 实例方法.静态方法.类方法的代码解析
Aug 23 Python
pycharm导入源码的具体步骤
Aug 04 Python
python如何利用Mitmproxy抓包
Oct 10 Python
使用python+pygame开发消消乐游戏附完整源码
Jun 10 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中“简单工厂模式”实例代码讲解
2012/09/04 PHP
Laravel5.1 框架控制器基础用法实例分析
2020/01/04 PHP
javascript URL编码和解码使用说明
2010/04/12 Javascript
javascript之bind使用介绍
2011/10/09 Javascript
jQuery插件的写法分享
2013/06/12 Javascript
jquery 删除字符串最后一个字符的方法解析
2014/02/11 Javascript
JavaScript控制按钮可用或不可用的方法
2015/04/03 Javascript
Bootstrap网格系统详解
2016/04/26 Javascript
javascript实现任务栏消息提示的简单实例
2016/05/31 Javascript
bootstrap table小案例
2016/10/21 Javascript
面包屑导航详解
2017/12/07 Javascript
vue中使用百度脑图kityminder-core二次开发的实现
2019/09/26 Javascript
JavaScript常用工具函数库汇总
2020/09/17 Javascript
在Python中使用全局日志时需要注意的问题
2015/05/06 Python
Python基于回溯法子集树模板解决m着色问题示例
2017/09/07 Python
Python实现将Excel转换成xml的方法示例
2018/08/25 Python
Pandas之排序函数sort_values()的实现
2019/07/09 Python
python输入错误后删除的方法
2019/10/12 Python
python实现微信打飞机游戏
2020/03/24 Python
Python selenium键盘鼠标事件实现过程详解
2020/07/28 Python
Selenium获取登录Cookies并添加Cookies自动登录的方法
2020/12/04 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
2021/01/25 Python
CSS3实现多重边框的方法总结
2016/05/31 HTML / CSS
佳能英国官方网站:Canon UK
2017/08/08 全球购物
捷克体育用品购物网站:D-sport
2017/12/28 全球购物
sort命令的作用和用法
2013/08/25 面试题
一名老师的自我评价
2014/02/07 职场文书
高中校园广播稿
2014/10/21 职场文书
2015年秋季新学期寄语
2015/03/25 职场文书
煤矿百日安全活动总结
2015/05/07 职场文书
不同意离婚答辩状
2015/05/22 职场文书
革命电影观后感
2015/06/18 职场文书
幼儿园春季开学通知
2015/07/16 职场文书
MySQL中优化SQL语句的方法(show status、explain分析服务器状态信息)
2022/04/09 MySQL
详解Mysq MVCC多版本的并发控制
2022/04/29 MySQL
前端canvas中物体边框和控制点的实现示例
2022/08/05 Javascript