Python ctypes: копирование содержимого структуры

Я хочу, чтобы имитировать кусок кода C в Python с помощью ctypes, код что-то вроде:

typedef struct {
  int x;
  int y;
} point;

void copy_point(point *a, point *b) {
  *a = *b;
}

в ctypes это 'Невозможно сделать следующее:

from ctypes import *

class Point(Structure):
  _fields_ = [("x", c_int),("y", c_int)]

def copy_point(a, b):
  a.contents = b.contents

p0 = pointer(Point())
p1 = pointer(Point())
copy_point(p0,p1)

какcontents все еще является структурным объектом Python ctypes, который управляется как сама ссылка.

Очевидным обходным решением было бы вручную скопировать каждое поле (которое представлено как неизменный python int 's), но это нет масштаб с более сложными структурами. Кроме того, это должно быть сделано рекурсивно для полей, которые не являются базовыми, но структурированными типами.

Мой другой вариант заключается в использованииmemmove и копировать объекты, как если бы они были буферами, но это кажется очень подверженным ошибкам (так как Python динамически типизирован, было бы слишком легко использовать его с объектами различного типа и размера, что приведет к повреждению памяти или ошибкам сегментации) ...

Какие-либо предложения?

Редактировать:

Я также мог бы использовать новую новую копию структуры, так что, возможно, это может быть полезно:

import copy
p0 = Point()
p1 = copy.deepcopy(p0) #or just a shallow copy for this example

но я нене знаю, может ли быть какое-то странное поведение, копирующее прокси ctypes, как если бы они были обычными объектами Python ...

Ответы на вопрос(5)

Ваш ответ на вопрос