1

Python で複雑なオブジェクトを比較する際に問題が発生しobject_a = object_bましたif object_a == object_b:。私の通常の解決策は、オブジェクトのアドレスを文字列にすることでした。これは常に一意でなければなりません。

str(object_a)以下は、オブジェクトの比較ととの値の比較の両方の方法で機能する場合ですstr(object_b)

>>> class Thing:
>>>     def __init__(self):
>>>         self.x = 0
>>>         return
>>>
>>> a = Thing()
>>> b = a
>>> b == a
True
>>> a_pointer = str(a)
>>> b_pointer = str(b)
>>> a
<__main__.Thing instance at 0x16c0098>
>>> b
<__main__.Thing instance at 0x16c0098>
>>> a == b
True

より良い方法はありますか?これが機能しない場合がありますか?

4

2 に答える 2

1

このコードでは、2 つのオブジェクトを高速に比較するのではなく、変数が同じオブジェクトを指しているかどうかを確認するだけで、これはまったく異なります。

とにかく、それを行うPythonicの方法は、ポインターを文字列にキャストするのではなく、演算子「is」を使用することです。

>>> a is b
True
>>> b is A
True
于 2013-11-06T16:29:50.710 に答える