对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 socket.error: [Errno 98] Address already in use的原因和解决方法
Aug 25 Python
python使用sorted函数对列表进行排序的方法
Apr 04 Python
python版微信跳一跳游戏辅助
Jan 11 Python
TensorFlow中权重的随机初始化的方法
Feb 11 Python
python使用turtle库绘制树
Jun 25 Python
python 读取dicom文件,生成info.txt和raw文件的方法
Jan 24 Python
Python3.5实现的罗马数字转换成整数功能示例
Feb 25 Python
Python+OpenCV实现旋转文本校正方式
Jan 09 Python
PyTorch 随机数生成占用 CPU 过高的解决方法
Jan 13 Python
Python字符编码转码之GBK,UTF8互转
Feb 09 Python
python代码xml转txt实例
Mar 10 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
May 11 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
基于mysql的论坛(5)
2006/10/09 PHP
php中获得视频时间总长度的另一种方法
2011/09/15 PHP
php使用Session和文件统计在线人数
2015/07/04 PHP
基于逻辑运算的简单权限系统(实现) JS 版
2007/03/24 Javascript
ASP.NET中AJAX 调用实例代码
2012/05/03 Javascript
一个页面放2段图片滚动代码出现冲突的问题如何解决
2012/12/21 Javascript
$.get获取一个文件的内容示例代码
2013/09/11 Javascript
javascript获取flash版本号的方法
2014/11/20 Javascript
jQuery实现统计输入文字个数的方法
2015/03/11 Javascript
JS实现的简单鼠标跟随DiV层效果完整实例
2015/10/31 Javascript
浅谈JS中逗号运算符的用法
2016/06/12 Javascript
Angular2 (RC5) 路由与导航详解
2016/09/21 Javascript
在 React、Vue项目中使用SVG的方法
2018/02/09 Javascript
vue脚手架搭建过程图解
2018/06/06 Javascript
小程序使用watch监听数据变化的方法详解
2019/09/20 Javascript
[03:46]DOTA2英雄基础教程 维萨吉
2013/12/11 DOTA
[02:11]2016国际邀请赛中国区预选赛全程回顾
2016/07/01 DOTA
Python使用xlrd模块操作Excel数据导入的方法
2015/05/26 Python
python开发中module模块用法实例分析
2015/11/12 Python
详解python的ORM中Pony用法
2018/02/09 Python
Tensorflow 同时载入多个模型的实例讲解
2018/07/27 Python
python编写简易聊天室实现局域网内聊天功能
2018/07/28 Python
Pycharm使用之设置代码字体大小和颜色主题的教程
2019/07/12 Python
Python IDE Pycharm中的快捷键列表用法
2019/08/08 Python
利用pyecharts实现地图可视化的例子
2019/08/12 Python
密封类可以有虚函数吗
2014/08/11 面试题
升职自荐信
2013/11/28 职场文书
大学理论知识学习自我鉴定
2014/04/28 职场文书
学校标语大全
2014/06/19 职场文书
2014年综治维稳工作总结
2014/11/17 职场文书
北大自主招生自荐信
2015/03/04 职场文书
女方家长婚礼答谢词
2015/09/29 职场文书
《亲亲我的妈妈》观后感(3篇)
2019/09/26 职场文书
话题作文之诚信
2019/11/28 职场文书
Python获取指定日期是"星期几"的6种方法
2022/03/13 Python
详解SQL的窗口函数
2022/04/21 Oracle