对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通过scapy获取局域网所有主机mac地址示例
May 04 Python
从零学python系列之数据处理编程实例(二)
May 22 Python
Python中文编码那些事
Jun 25 Python
Python中的闭包总结
Sep 18 Python
Python中字符串对齐方法介绍
May 21 Python
用python实现将数组元素按从小到大的顺序排列方法
Jul 02 Python
在Django中URL正则表达式匹配的方法
Dec 20 Python
在Python中Dataframe通过print输出多行时显示省略号的实例
Dec 22 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
Feb 04 Python
python数据预处理 :样本分布不均的解决(过采样和欠采样)
Feb 29 Python
Python根据URL地址下载文件并保存至对应目录的实现
Nov 15 Python
python程序实现BTC(比特币)挖矿的完整代码
Jan 20 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 移除数组重复元素的一点说明
2008/11/27 PHP
PHP时间戳与日期之间转换的实例介绍
2013/04/19 PHP
javascript数组与php数组的地址传递及值传递用法实例
2015/01/22 PHP
php文件缓存方法总结
2016/03/16 PHP
Yii2 GridView实现列表页直接修改数据的方法
2016/05/16 PHP
php入门教程之Zend Studio设置与开发实例
2016/09/09 PHP
客户端脚本中常常出现的一些问题和调试技巧
2007/01/09 Javascript
javascript获取网页中指定节点的父节点、子节点的方法小结
2013/04/24 Javascript
多个js毫秒倒计时同时进行效果
2016/01/05 Javascript
jQuery使用each方法与for语句遍历数组示例
2016/06/16 Javascript
jQuery树形控件zTree使用小结
2016/08/02 Javascript
Angularjs使用过滤器完成排序功能
2017/09/20 Javascript
vue-cli3+typescript新建一个项目的思路分析
2019/08/06 Javascript
vue之组件内监控$store中定义变量的变化详解
2019/11/08 Javascript
vue使用recorder.js实现录音功能
2019/11/22 Javascript
JQuery中的常用事件、对象属性与使用方法分析
2019/12/23 jQuery
es6数组的flat(),flatMap()函数用法实例分析
2020/04/18 Javascript
vue 路由懒加载中给 Webpack Chunks 命名的方法
2020/04/24 Javascript
JS如何在不同平台实现多语言方式
2020/07/16 Javascript
[01:16:01]VGJ.S vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
在Django的session中使用User对象的方法
2015/07/23 Python
python实现飞船大战
2020/04/24 Python
HTML5 Canvas玩转酷炫大波浪进度图效果实例(附demo)
2016/12/14 HTML / CSS
美体小铺瑞典官方网站:The Body Shop瑞典
2018/01/27 全球购物
新西兰航空中国官网:Air New Zealand China
2018/07/24 全球购物
澳大利亚最大的百货公司:Myer
2018/12/21 全球购物
什么是JNDI的上下文?如何初始化JNDI上下文
2012/03/10 面试题
天鹅的故事教学反思
2014/02/04 职场文书
聘任书模板
2014/03/29 职场文书
常务副县长“四风”个人对照检查材料思想汇报
2014/10/02 职场文书
房产协议书范本
2014/10/18 职场文书
学习十八届四中全会精神思想汇报
2014/10/23 职场文书
2014年高校辅导员工作总结
2014/12/09 职场文书
幼儿园圣诞节活动总结
2015/05/06 职场文书
优秀团员主要事迹范文
2015/11/05 职场文书
原生Js 实现的简单无缝滚动轮播图的示例代码
2021/05/10 Javascript