class A(object):
def __cmp__(self):
print '__cmp__'
return object.__cmp__(self)
def __eq__(self, rhs):
print '__eq__'
return True
a1 = A()
a2 = A()
print a1 in set([a1])
print a1 in set([a2])
为什么第一行打印True,而第二行打印False?而且都没有输入运算符 eq 吗?
我正在使用Python 2.6
您也需要定义__hash__
。例如
class A(object):
def __hash__(self):
print '__hash__'
return 42
def __cmp__(self, other):
print '__cmp__'
return object.__cmp__(self, other)
def __eq__(self, rhs):
print '__eq__'
return True
a1 = A()
a2 = A()
print a1 in set([a1])
print a1 in set([a2])
将按预期工作。
作为一般规则,你实现任何时间__cmp__
,你应该实施__hash__
,使得所有x
与y
这样x == y
,x.__hash__() == y.__hash__()
。
问题内容: 我做了两次测试,第一次是从 上面的例子表明 现在我做类似的操作,但是这次 这个例子表明 我很困惑,被路过了,哪个路过了? 问题答案: 在您的第一个代码中,是的,这一行 分配给所引用的,即。在这一点上,它们是同一对象。但是,下一行 创建的 新 实例,并更改对此新String 的引用。当我们更改的引用时,的内容不会更改。 注意Java 是不可变的,即一旦初始化就无法更改状态。以这种方式思考
shell脚本中的,有什么区别? 以下两者有什么区别吗? 仅仅是 和 仅在变量包含数字时才使用吗?
我试图用if-let表达来概括我的大脑。我知道它的作用,但我找不到一些细节背后的基本原理。 第一个细节是赋值运算符而不是相等运算符的使用,第二个细节是操作数的位置。 例如: 在我看来,这样更“清晰”: 或者更好: 有人能帮我理解这背后的原理吗?
本文向大家介绍什么是MySQL NULL安全相等运算符,它与比较运算符有何不同?,包括了什么是MySQL NULL安全相等运算符,它与比较运算符有何不同?的使用技巧和注意事项,需要的朋友参考一下 与标准SQL IS NOT DISTINCT FROM运算符等效的MySQL NULL安全相等运算符执行等于运算符的相等比较。其符号为<=>。当我们两个操作数都为NULL时,它的性能与比较运算符不同。请看
我想要的是Hibernate生成1条语句删除所有子级的方法,而不是每个子级1条语句。 如果实体a和B之间存在关系,其中a是父对象,B可以是多个子对象。如果我在实体关系上使用注释,如OrphanRemoving或OnCascade delete,那么当我删除父对象时,自动生成的sql会显示 我想让Hibernate做的是生成SQL 是否有一个注释或设置我可以用来轻松做到这一点? 我觉得我不是第一个遇
我知道我们不应该使用==但是。equal()方法在IntelliJ或Idk中不起作用。如果不是IntelliJ,那就错了。有人能看一下吗。