对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类:class创建、数据方法属性及访问控制详解
Jul 25 Python
使用python实现ANN
Dec 20 Python
Python实现的json文件读取及中文乱码显示问题解决方法
Aug 06 Python
python 直接赋值和copy的区别详解
Aug 07 Python
pytorch 数据处理:定义自己的数据集合实例
Dec 31 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
Feb 21 Python
python实现最速下降法
Mar 24 Python
python requests.get带header
May 05 Python
如何打包Python Web项目实现免安装一键启动的方法
May 21 Python
Python多线程threading创建及使用方法解析
Jun 17 Python
PyCharm中配置PySide2的图文教程
Jun 18 Python
Python将字典转换为XML的方法
Aug 01 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
Terran历史背景
2020/03/14 星际争霸
PHP4实际应用经验篇(1)
2006/10/09 PHP
在PHP中养成7个面向对象的好习惯
2010/07/17 PHP
破解.net程序(dll文件)编译和反编译方法
2013/01/31 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
2016/07/21 PHP
js 页面传参数时 参数值含特殊字符的问题
2009/12/13 Javascript
js弹出层之1:JQuery.Boxy (二)
2011/10/06 Javascript
基于jquery DOM写的类似微博发布的效果
2012/10/20 Javascript
使用ImageMagick进行图片缩放、合成与裁剪(js+python)
2013/09/16 Javascript
JS操作iframe里的dom(实例讲解)
2014/01/29 Javascript
JQuery中serialize()、serializeArray()和param()方法示例介绍
2014/07/31 Javascript
js 动态修改css文件用到了cssRule
2014/08/20 Javascript
AngularJS初始化过程分析(引导程序)
2014/12/06 Javascript
JavaScript使用ActiveXObject访问Access和SQL Server数据库
2015/04/02 Javascript
jQuery实现带渐显效果的人物多级关系图代码
2015/10/16 Javascript
关于javascript中dataset的问题小结
2015/11/16 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
2016/08/19 Javascript
Vue2实现组件props双向绑定
2016/12/02 Javascript
详解react native页面间传递数据的几种方式
2018/11/07 Javascript
qrcode生成二维码微信长按无法识别问题的解决
2019/04/04 Javascript
vue项目中自定义video视频控制条的实现代码
2020/04/26 Javascript
使用python装饰器验证配置文件示例
2014/02/24 Python
python实现基于两张图片生成圆角图标效果的方法
2015/03/26 Python
Python minidom模块用法示例【DOM写入和解析XML】
2019/03/25 Python
python原类、类的创建过程与方法详解
2019/07/19 Python
python自动化UI工具发送QQ消息的实例
2019/08/27 Python
canvas实现圆绘制的示例代码
2019/09/11 HTML / CSS
美国领先的男士和女士内衣购物网站:Freshpair
2019/02/25 全球购物
Koral官方网站:女性时尚运动服
2019/04/10 全球购物
C#里面如何倒序排列一个数组的元素?
2013/06/21 面试题
初三政治教学反思
2014/01/30 职场文书
公司合并协议书范本
2014/09/30 职场文书
保证书格式
2015/01/16 职场文书
人生一定要学会的三样东西:放下、忘记、珍惜
2019/08/21 职场文书
python接口测试返回数据为字典取值方式
2022/02/12 Python
Python matplotlib 利用随机函数生成变化图形
2022/04/26 Python