对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通过floor函数舍弃小数位的方法
Mar 17 Python
python搜索指定目录的方法
Apr 29 Python
python读写二进制文件的方法
May 09 Python
Python中 Lambda表达式全面解析
Nov 28 Python
Python基础练习之用户登录实现代码分享
Nov 08 Python
Django admin实现图书管理系统菜鸟级教程完整实例
Dec 12 Python
pandas中read_csv的缺失值处理方式
Dec 19 Python
利用Tensorflow构建和训练自己的CNN来做简单的验证码识别方式
Jan 20 Python
Tensorflow 多线程与多进程数据加载实例
Feb 05 Python
python实现输入三角形边长自动作图求面积案例
Apr 12 Python
Python爬虫爬取百度搜索内容代码实例
Jun 05 Python
python tkinter Entry控件的焦点移动操作
May 22 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
smarty模板引擎基础知识入门
2015/03/30 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
function, new function, new Function之间的区别
2007/03/08 Javascript
两个比较有用的Javascript工具函数代码
2010/02/17 Javascript
javascript中的toFixed固定小数位数 简单实例分享
2013/07/12 Javascript
js检查页面上有无重复id的实现代码
2013/07/17 Javascript
常用的JavaScript验证正则表达式汇总
2013/11/26 Javascript
js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解
2016/04/01 Javascript
基于js实现checkbox批量选中操作
2016/11/22 Javascript
jQuery实现6位数字密码输入框
2016/12/29 Javascript
浅谈JS中的反柯里化( uncurrying)
2017/08/17 Javascript
seajs模块压缩问题与解决方法实例分析
2017/10/10 Javascript
bootstrap实现二级下拉菜单效果
2017/11/23 Javascript
微信小程序实现鼠标拖动效果示例
2017/12/01 Javascript
JS实现的邮箱提示补全效果示例
2018/01/30 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
2018/08/04 Javascript
[49:27]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第一场
2018/04/05 DOTA
python翻译软件实现代码(使用google api完成)
2013/11/26 Python
对于Python的框架中一些会话程序的管理
2015/04/20 Python
Face++ API实现手势识别系统设计
2018/11/21 Python
由Python编写的MySQL管理工具代码实例
2019/04/09 Python
Python网络爬虫之爬取微博热搜
2019/04/18 Python
在python中将list分段并保存为array类型的方法
2019/07/15 Python
Python 日志logging模块用法简单示例
2019/10/18 Python
python 一维二维插值实例
2020/04/22 Python
美国最大的香水连锁店官网:Perfumania
2016/08/15 全球购物
FC-Moto丹麦:欧洲最大的摩托车服装和头盔商店之一
2019/08/20 全球购物
业务员岗位职责范本
2013/12/15 职场文书
社区工作者感言
2014/03/02 职场文书
2014全国两会学习心得体会1000字
2014/03/10 职场文书
学员自我鉴定
2014/03/19 职场文书
航海技术专业毕业生推荐信
2014/07/09 职场文书
大学毕业生管理学求职信
2014/09/01 职场文书
2015年中秋节活动总结
2015/03/23 职场文书
公文格式,规则明细(新手收藏)
2019/07/23 职场文书
python中的装饰器该如何使用
2021/06/18 Python