2つのctypesオブジェクトを比較して等しいかどうかを確認するにはどうすればよいですか?

FipS
import ctypes as ct

class Point(ct.Structure):
    _fields_ = [
        ('x', ct.c_int),
        ('y', ct.c_int),
    ]

p1 = Point(10, 10)
p2 = Point(10, 10)

print p1 == p2 # => False

等式演算子 ' == 'は、上記の自明な場合にFalse与えます。簡単なアプローチはありますか?

編集:

これは(受け入れられた回答に基づいて)わずかに改善されたバージョンであり、ネストされた配列も処理できます。

import ctypes as ct

class CtStruct(ct.Structure):

    def __eq__(self, other):
        for field in self._fields_:
            attr_name = field[0]
            a, b = getattr(self, attr_name), getattr(other, attr_name)
            is_array = isinstance(a, ct.Array)
            if is_array and a[:] != b[:] or not is_array and a != b:
                return False
        return True

    def __ne__(self, other):
        for field in self._fields_:
            attr_name = field[0]
            a, b = getattr(self, attr_name), getattr(other, attr_name)
            is_array = isinstance(a, ct.Array)
            if is_array and a[:] != b[:] or not is_array and a != b:
                return True
        return False

class Point(CtStruct):
    _fields_ = [
        ('x', ct.c_int),
        ('y', ct.c_int),
        ('arr', ct.c_int * 2),
    ]

p1 = Point(10, 20, (30, 40))
p2 = Point(10, 20, (30, 40))

print p1 == p2 # True
bpceee

クラスMyCtStructureを作成すると、そのすべてのサブクラスに__eq__を実装する必要がなくなり__ne__ます。eqを定義することは、あなたの場合、もう少し退屈な仕事ではありません。

import ctypes as ct
class MyCtStructure(ct.Structure):

    def __eq__(self, other):
        for fld in self._fields_:
            if getattr(self, fld[0]) != getattr(other, fld[0]):
                return False
        return True

    def __ne__(self, other):
        for fld in self._fields_:
            if getattr(self, fld[0]) != getattr(other, fld[0]):
                return True
        return False

class Point(MyCtStructure):
    _fields_ = [
        ('x', ct.c_int),
        ('y', ct.c_int),
    ]


p1 = Point(10, 11)
p2 = Point(10, 11)

print p1 == p2

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

2つのMapオブジェクトが等しいかどうかを確認するにはどうすればよいですか?

分類Dev

reactとjavascriptを使用してオブジェクトの配列がnullかどうかを確認するにはどうすればよいですか?

分類Dev

2つの配列を比較して、類似したオブジェクトの数を取得するにはどうすればよいですか?

分類Dev

2つのNSMutableArrayから一般的なオブジェクト(NSDictionaries)を比較して削除するにはどうすればよいですか?

分類Dev

2つのオブジェクトを比較するにはどうすればよいですか

分類Dev

2つのc#オブジェクトを比較してJsonPatchDocumentを作成するにはどうすればよいですか?

分類Dev

リストを反復処理して、2つのオブジェクトが等しいかどうかを確認するにはどうすればよいですか

分類Dev

getLoggerが新しいオブジェクトを作成したかどうかを確認するにはどうすればよいですか?

分類Dev

2つのオブジェクトがいつロードされたかを確認するにはどうすればよいですか?

分類Dev

Pythonでflexを使用しているかのように正規表現オブジェクトを比較するにはどうすればよいですか?

分類Dev

TreeMapに特定のオブジェクトが含まれているかどうかを確認するにはどうすればよいですか?

分類Dev

scalaとscalatestを使用して、特定の値に一致するフィールドを持つオブジェクトがリストに含まれているかどうかを確認するにはどうすればよいですか?

分類Dev

異なるオブジェクトからの2つの日付値を比較し、それらをフォーマットして、等しいかどうかをテストするにはどうすればよいですか?

分類Dev

2つの変数がPythonで同じオブジェクトを参照しているかどうかを確認するにはどうすればよいですか?

分類Dev

postmanテストを使用して、API応答の1つのノードがすべてのオブジェクトで同じ値を持っているかどうかを確認するにはどうすればよいですか?

分類Dev

2つの変数がメモリ内の同じオブジェクトを指しているかどうかを確認するにはどうすればよいですか?

分類Dev

Win7:このオブジェクトを描画しているプロセスを確認するにはどうすればよいですか?

分類Dev

2つの参照変数が同じオブジェクトを借用しているかどうかを確認するにはどうすればよいですか?

分類Dev

Vue v-if内で、オブジェクトの配列内のオブジェクトが指定されたキーに対して特定の値を持っているかどうかを確認するにはどうすればよいですか?

分類Dev

djangoテンプレートでpkを使用してオブジェクトの存在を確認するにはどうすればよいですか?

分類Dev

Ebeanでオブジェクトの存在を確認するにはどうすればよいですか?

分類Dev

NSArray内の空のオブジェクトを確認するにはどうすればよいですか?

分類Dev

オブジェクトがすでに破壊されているかどうかを確認するにはどうすればよいですか?

分類Dev

オブジェクトが別のオブジェクトのプロパティにプロパティとしてネストされているかどうかを確認するにはどうすればよいですか?

分類Dev

3つのオブジェクトを変換して位置を入れ替えるにはどうすればよいですか?ただし、オブジェクトがすでに移動している位置にオブジェクトが移動していないことを確認してください。

分類Dev

オブジェクトがどのモジュールで定義されているかを確認するにはどうすればよいですか?

分類Dev

オブジェクトが存在し、Xプロパティがあるかどうかを確認するにはどうすればよいですか?

分類Dev

JavaScriptオブジェクトに値が含まれているかどうかを確認するにはどうすればよいですか?

分類Dev

オブジェクト(変数)がRで定義されているかどうかを確認するにはどうすればよいですか?

Related 関連記事

  1. 1

    2つのMapオブジェクトが等しいかどうかを確認するにはどうすればよいですか?

  2. 2

    reactとjavascriptを使用してオブジェクトの配列がnullかどうかを確認するにはどうすればよいですか?

  3. 3

    2つの配列を比較して、類似したオブジェクトの数を取得するにはどうすればよいですか?

  4. 4

    2つのNSMutableArrayから一般的なオブジェクト(NSDictionaries)を比較して削除するにはどうすればよいですか?

  5. 5

    2つのオブジェクトを比較するにはどうすればよいですか

  6. 6

    2つのc#オブジェクトを比較してJsonPatchDocumentを作成するにはどうすればよいですか?

  7. 7

    リストを反復処理して、2つのオブジェクトが等しいかどうかを確認するにはどうすればよいですか

  8. 8

    getLoggerが新しいオブジェクトを作成したかどうかを確認するにはどうすればよいですか?

  9. 9

    2つのオブジェクトがいつロードされたかを確認するにはどうすればよいですか?

  10. 10

    Pythonでflexを使用しているかのように正規表現オブジェクトを比較するにはどうすればよいですか?

  11. 11

    TreeMapに特定のオブジェクトが含まれているかどうかを確認するにはどうすればよいですか?

  12. 12

    scalaとscalatestを使用して、特定の値に一致するフィールドを持つオブジェクトがリストに含まれているかどうかを確認するにはどうすればよいですか?

  13. 13

    異なるオブジェクトからの2つの日付値を比較し、それらをフォーマットして、等しいかどうかをテストするにはどうすればよいですか?

  14. 14

    2つの変数がPythonで同じオブジェクトを参照しているかどうかを確認するにはどうすればよいですか?

  15. 15

    postmanテストを使用して、API応答の1つのノードがすべてのオブジェクトで同じ値を持っているかどうかを確認するにはどうすればよいですか?

  16. 16

    2つの変数がメモリ内の同じオブジェクトを指しているかどうかを確認するにはどうすればよいですか?

  17. 17

    Win7:このオブジェクトを描画しているプロセスを確認するにはどうすればよいですか?

  18. 18

    2つの参照変数が同じオブジェクトを借用しているかどうかを確認するにはどうすればよいですか?

  19. 19

    Vue v-if内で、オブジェクトの配列内のオブジェクトが指定されたキーに対して特定の値を持っているかどうかを確認するにはどうすればよいですか?

  20. 20

    djangoテンプレートでpkを使用してオブジェクトの存在を確認するにはどうすればよいですか?

  21. 21

    Ebeanでオブジェクトの存在を確認するにはどうすればよいですか?

  22. 22

    NSArray内の空のオブジェクトを確認するにはどうすればよいですか?

  23. 23

    オブジェクトがすでに破壊されているかどうかを確認するにはどうすればよいですか?

  24. 24

    オブジェクトが別のオブジェクトのプロパティにプロパティとしてネストされているかどうかを確認するにはどうすればよいですか?

  25. 25

    3つのオブジェクトを変換して位置を入れ替えるにはどうすればよいですか?ただし、オブジェクトがすでに移動している位置にオブジェクトが移動していないことを確認してください。

  26. 26

    オブジェクトがどのモジュールで定義されているかを確認するにはどうすればよいですか?

  27. 27

    オブジェクトが存在し、Xプロパティがあるかどうかを確認するにはどうすればよいですか?

  28. 28

    JavaScriptオブジェクトに値が含まれているかどうかを確認するにはどうすればよいですか?

  29. 29

    オブジェクト(変数)がRで定義されているかどうかを確認するにはどうすればよいですか?

ホットタグ

アーカイブ