Сначала я подумал, что это будет просто другой метод repr для "нормальных" типов, но после некоторого тестирования я думаю, что там происходит что-то определенно странное.Это действительно имеет значение, если что-то находится в структуре или нет.
from ctypes import *
class S(Structure):
_fields_ = [("x", POINTER(c_int)), ("y", c_int), ("z", c_float)]
o = S()
x = POINTER(c_int)
y = c_int(1)
z = c_float(2.2)
print("In structure: x:{}, y:{}, z:{}".format(o.x, o.y, o.z))
print("Out of structure: x:{}, y:{}, z:{}".format(x, y, z))
В структуре: x: <<strong> main .LP_c_long объект в 0x000000000A090EC8>, y: 0, z: 0.0
Вне структуры: x :, y: c_long (1), z: c_float (2.200000047683716)
В частности, я считаю, что это следует считать ошибочным поведением:
o.x.contents = y #OK
o.x.contents = o.y #not OK!!
Traceback (последний вызов был последним): файл "", строка 1, в TypeError: ожидается c_long вместо int