如何 add/subtract 两个 ctypes.c_double 在 Python

How to add/subtract two ctypes.c_double in Python

简单的问题。我有两个 ctypes.c_double我想把它们一起加减。

我希望能够说出这样的话:

In [1]: c_double(2) + c_double(2)
Out[1]: c_double(4.0)

目前,当我尝试此操作时出现错误:TypeError: unsupported operand type(s) for +: 'c_double' and 'c_double'

我目前的解决方法是:

In [1]: result = c_double(2).value + c_double(2).value

In [2]: c_double(result)
Out[2]: c_double(4.0)

有没有办法直接add/subtractctypes.cdouble?

您正在使用由其他人创建的 class,他似乎没有编写处理“+”操作的 __add__ 方法。

我建议你写你自己的方法:

def add(self, other):
    return c_double(self.value + other.value)

然后你告诉 c_double class add 是它的 __add__ 方法:

c_double.__add__ = add

我觉得应该可以

您可以继承 c_double class 以添加 __add__ 方法

import ctypes

class my_c_double(ctypes.c_double):
    def __add__(self,other):
        return my_c_double(self.value + other.value)


a = my_c_double(10)
b = my_c_double(20)

print((a+b).value)

打印30

请注意,您可能希望实现 __radd____iadd__ 并检查类型以便能够直接向左添加浮点数和整数。