课程丰富比较混乱

时间:2017-07-17 22:01:32

标签: python python-2.7

偶然发现这一点,请考虑以下代码:

class A(object):
    pass


class B(object):
    pass

a = A()
b = B()

print a > b  # False

文档states

  

如果未定义__cmp__()__eq__()__ne__()操作,则为class   实例按对象标识(“地址”)进行比较。

在上面的代码中,ab的地址是在运行时:

id(a)  # >>> 4499550864
id(b)  # >>> 4499682960

因此a > b产生False的原因是有道理的,因为a的地址不大于b的地址?(这是怎么回事? ?)如果我们考虑上述结论,只需在上面的代码中更改实例创建的位置仍然会a > bFalse

b = B()
a = A()
assert id(a) > id(b)  # doesn't raises assertion error
print a > b  # >>> False (why still False??)

为什么?现在a的地址是否大于b的地址? (我猜这是因为没有提出断言错误。)

0 个答案:

没有答案