>>> ctypes.c_ushort(37099) == ctypes.c_ushort(37099)
False
这些似乎并不相等,因为没有用于PyCSimpleType对象的比较运算符。
有没有理由将其省略?似乎必须使用:
>>> ctypes.c_ushort(37099).value == ctypes.c_ushort(37099).value
True
答案 0 :(得分:2)
根据ctypes._SimpleCData
及其超类ctypes._CData
的文档,“所有ctypes类型实例都包含一个存储与C兼容的数据的内存块。”
大概,ctypes.c_ushort(37099)
的每次调用都对应一个新的存储块,因此使它们之间的相等性比较为假。该文档还指出,value
属性包含对象的实际值。
>>> import ctypes
>>> val1 = ctypes.c_ushort(37099)
>>> val2 = ctypes.c_ushort(37099)
>>> ctypes.addressof(val1)
2193186894992
>>> ctypes.addressof(val2)
2193186895376