对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程序语言快速上手教程
Jul 18 Python
python二叉树的实现实例
Nov 21 Python
Python实现大文件排序的方法
Jul 10 Python
在Django同1个页面中的多表单处理详解
Jan 25 Python
Python实现多级目录压缩与解压文件的方法
Sep 01 Python
解决PyCharm同目录下导入模块会报错的问题
Oct 13 Python
浅谈Python 列表字典赋值的陷阱
Jan 20 Python
Django中URL的参数传递的实现
Aug 04 Python
python如何将多个PDF进行合并
Aug 13 Python
Python csv模块使用方法代码实例
Aug 29 Python
Python自动重新加载模块详解(autoreload module)
Apr 01 Python
pytorch fine-tune 预训练的模型操作
Jun 03 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 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
2009/01/30 PHP
Ajax PHP 边学边练 之三 数据库
2009/11/26 PHP
实例讲解yii2.0在php命令行中运行的步骤
2015/12/01 PHP
浅析php设计模式之数据对象映射模式
2016/03/03 PHP
php反射学习之不用new方法实例化类操作示例
2019/06/14 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/01/13 Javascript
使用jquery animate创建平滑滚动效果(可以是到顶部、到底部或指定地方)
2014/05/27 Javascript
js实现星星打分效果的方法
2020/07/05 Javascript
关于JS中match() 和 exec() 返回值和属性的测试
2016/03/21 Javascript
JS去除字符串中空格的方法
2017/02/14 Javascript
Vue.js中兄弟组件之间互相传值实例
2017/06/01 Javascript
浅析从vue源码看观察者模式
2018/01/29 Javascript
Vue插件打包与发布的方法示例
2018/08/20 Javascript
Vue程序化的事件监听器(实例方案详解)
2020/01/07 Javascript
js实现登录时记住密码的方法分析
2020/04/05 Javascript
python3中dict(字典)的使用方法示例
2017/03/22 Python
django 多数据库配置教程
2018/05/30 Python
OpenCV2从摄像头获取帧并写入视频文件的方法
2018/08/03 Python
详解numpy的argmax的具体使用
2019/05/27 Python
Python3 合并二叉树的实现
2019/09/30 Python
python通过nmap扫描在线设备并尝试AAA登录(实例代码)
2019/12/30 Python
详解python UDP 编程
2020/08/24 Python
使用html5实现表格实现标题合并的实例代码
2019/05/13 HTML / CSS
Under Armour美国官网:美国知名高端功能性运动品牌
2016/09/05 全球购物
西班牙英格列斯百货英国官网:El Corte Inglés英国
2017/10/30 全球购物
一年级班主任寄语
2014/01/19 职场文书
会计专业应届生自荐信
2014/02/07 职场文书
2014年元旦活动方案
2014/02/15 职场文书
5s推行计划书
2014/05/06 职场文书
护林防火标语
2014/06/27 职场文书
节水倡议书
2015/01/19 职场文书
遗愿清单观后感
2015/06/09 职场文书
企业法律事务工作总结
2015/08/11 职场文书
行为规范主题班会
2015/08/13 职场文书
go原生库的中bytes.Buffer用法
2021/04/25 Golang
python实现调用摄像头并拍照发邮箱
2021/04/27 Python