对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的web框架编写MVC配置来使其运行的教程
Apr 30 Python
关于反爬虫的一些简单总结
Dec 13 Python
python实现画一颗树和一片森林
Jun 25 Python
浅谈pytorch grad_fn以及权重梯度不更新的问题
Aug 20 Python
Python 50行爬虫抓取并处理图灵书目过程详解
Sep 20 Python
详解Django将秒转换为xx天xx时xx分
Sep 27 Python
python 字典有序并写入json文件过程解析
Sep 30 Python
解决python replace函数替换无效问题
Jan 18 Python
python GUI库图形界面开发之PyQt5信号与槽基本操作
Feb 25 Python
将pycharm配置为matlab或者spyder的用法说明
Jun 08 Python
在Tensorflow中实现leakyRelu操作详解(高效)
Jun 30 Python
python两种注释用法的示例
Oct 09 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大批量数据操作时临时调整内存与执行时间的方法
2011/04/20 PHP
浅谈thinkphp5 instance 的简单实现
2017/07/30 PHP
深入学习微信网址链接解封的防封原理visit_type
2019/08/15 PHP
解密效果
2006/06/23 Javascript
JQuery 引发两次$(document.ready)事件
2010/01/15 Javascript
浏览器打开层自动缓慢展开收缩实例代码
2013/07/04 Javascript
checkbox设置复选框的只读效果不让用户勾选
2013/08/12 Javascript
利用js实现在浏览器状态栏显示访问者在本页停留的时间
2013/12/29 Javascript
JavaScript获取路径设计源码
2014/05/22 Javascript
Bootstrap轮播插件使用代码
2016/10/11 Javascript
使用纯JS代码判断字符串中有多少汉字的实现方法(超简单实用)
2016/11/12 Javascript
JavaScript定时器实现的原理分析
2016/12/06 Javascript
Vuejs 组件——props数据传递的实例代码
2017/03/07 Javascript
Vue中插入HTML代码的方法
2018/09/21 Javascript
微信小程序3种位置API的使用方法详解
2019/08/05 Javascript
Vue 使用iframe引用html页面实现vue和html页面方法的调用操作
2020/11/16 Javascript
[01:45]亚洲邀请赛互动指南虚拟物品介绍
2015/01/30 DOTA
[01:20:38]完美世界DOTA2联赛 GXR vs IO 第一场 11.07
2020/11/09 DOTA
使用python删除nginx缓存文件示例(python文件操作)
2014/03/26 Python
Python实现的计数排序算法示例
2017/11/29 Python
Python爬虫获取图片并下载保存至本地的实例
2018/06/01 Python
Python3中正则模块re.compile、re.match及re.search函数用法详解
2018/06/11 Python
Python初学者需要注意的事项小结(python2与python3)
2018/09/26 Python
Python中的CSV文件使用"with"语句的方式详解
2018/10/16 Python
Python Tkinter 简单登录界面的实现
2019/06/14 Python
详解Django定时任务模块设计与实践
2019/07/24 Python
HTML5拖放功能_动力节点Java学院整理
2017/07/13 HTML / CSS
编写函数,将一个3*3矩阵转置
2013/10/09 面试题
长青弘远的面试题
2012/06/09 面试题
培训讲师邀请函
2014/01/10 职场文书
公司会计岗位职责
2014/02/13 职场文书
安全生产中长期规划实施方案
2014/02/21 职场文书
2014年个人师德工作总结
2014/12/04 职场文书
贫困生证明范文
2015/06/16 职场文书
团队执行力培训心得体会
2015/08/15 职场文书
2022年四月新番
2022/03/15 日漫