2011-12-20 10 views
0

私はPythonでクラスを作成すると仮定しますが、私のクラスには__cmp__メソッドを定義しません。今度はそのクラスのインスタンスを2つ作成して比較します。 Pythonはどのようなcmpメソッドを使用しますか?私はコードを実行し、それが等しいかどうかを比較するとfalseを返します。 Pythonはメモリアドレスを比較しますか?クラスの__cmp__を定義しないPythonオブジェクトの比較

class A(object): 
    def __init__(self, s): 
     self.s = s 

    def __str__(self): 
     return self.s 

x1 = A("jim") 
x2 = A("jim") 
print x1 == x2 

シェルは言う:

False 
+0

ドキュメントは '__le__'、' __lt__'などのメソッドではっきりしています。何を聞いていますか?リファレンスhttp://docs.python.org/reference/datamodel.html#object.__lt__ –

答えて

2

lambda x,y: id(x)==id(y)メモリを提供する場合。

+0

私はPythonのマニュアルページでそのようなことを探していましたが、見つけられませんでした。あなたはどこを見つけましたか? – BlackSheep

+0

@BlackSheep、よく覚えていないが、私はソースコードを読んでいる間に見つけたと思う。 –

+0

いいえリッチ比較が使用されます。 http://docs.python.org/reference/datamodel.html#object.__eq__ –

関連する問題