加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python语句:有时是True,有时是False.为什么?

发布时间:2020-12-20 11:37:07 所属栏目:Python 来源:网络整理
导读:我希望在 Python中更好地理解OOP,并编写了一些描述(无限)序数算法的代码.我用通常的比较运算符(==, =等),加法和乘法定义了一个名为Omega()的类. 我想我会检查(应该是真的)添加到自身的第一个无限序数是否小于或等于第一个不可数序数.启动交互式shell,这是我
我希望在 Python中更好地理解OOP,并编写了一些描述(无限)序数算法的代码.我用通常的比较运算符(==,< =等),加法和乘法定义了一个名为Omega()的类. 我想我会检查(应该是真的)添加到自身的第一个无限序数是否小于或等于第一个不可数序数.启动交互式shell,这是我发现的:

>>> a,b = Omega(),Omega(1)
    >>> (a+a) <= b
    False
    >>> (a+a) <= b
    True
    >>> (a+a) <= b
    False

相同的表达式产生不同的真值.

我继续测试表达式,无法发现任何模式.如果我重新解释代码,我发现反复测试表达式会产生不同的True / False值序列.

什么可能导致这种行为?

如果它是相关的,我在Windows 8.1上使用CPython 2.7.5.

这是我运行的Python代码:http://pastebin.com/XPqMphBw

解决方法

我相信你错误地重载了< =和> =运算符.代替:

def __leq__(self,other):
# ...
def __geq__(self,other):

改用它:

def __le__(self,other):
# ...
def __ge__(self,other):

进行这些更改并在Python 3.4.1中运行后,我得到:

>>> a,Omega(1)
>>> (a+a) <= b
True
>>> (a+a) <= b
True
>>> (a+a) <= b
True

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读