时间:2021-05-22
学习Python面向对象编程的时候,遇到了一个很有意思的小问题。Python的__bool__方法不起作用的问题。
我反复读了我手中的教程,确认了我写的代码应该管用。可是在测试的时候却一直不通过,后来发现我实现的__bool__方法似乎并不是Python本身的接口。
代码如下:
class Demo():def __init__(self,value = 0): self.value = valuedef __bool__(self): return bool(self.value > 5)obj = Demo()obj.value = 0if 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.pyyesTrue这多少有点奇怪,居然跟我预期的不一样。尝试直接调用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 -VPython 2.7.6我在win10上安装的Python版本是3.X,切换CMD只有测试如下:
E:\01_workspace\02_programme_language\03_python\03_OOP\2017\08\16>pythonbool_demo.pynoFalseE:\01_workspace\02_programme_language\03_python\03_OOP\2017\08\16>python-VPython 3.6.0最终结果符合预期!
看起来,这应该是Python3与Python2之间的一点接口上的差异。如果从好用的角度考虑,自然是具有这种接口的Python3更加人性化一些。这会给程序员更大的自由度,也能够实现与Python本身集成度更高的代码。
以上这篇对Python2与Python3中__bool__方法的差异详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
最新的CentOS8已经内置了Python2和Python3,出入Python2和Python3两个命令可以分别进入Python2和Python3。CentOS
python2和python3对于字符串的处理有很大的区别熟悉了python2的写法用python3时真的会遇到很多问题啊……区别python2中有一种类型叫做
想学习Python的人都会有一个困惑,那就是Python目前有两个版本Python2和Python3,Python2与Python3有何区别,两个版本该学习哪个
首先先说一下python2与python3的选择许多刚入门Python的朋友都在纠结的的问题是:我应该选择学习python2还是python3?对此,回答是:果
在Python2和Python3中都提供print()方法来打印信息,但两个版本间的print稍微有差异主要体现在以下几个方面:1.python3中print是