简单的问题。我有两个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)


有没有办法直接加/减ctypes.cdouble

最佳答案

您可以继承c_double类以添加__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__并检查类型,以便能够直接使用浮点数和整数左加。

关于python - 如何在Python中添加/减去两个ctypes.c_double,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57186789/

10-13 04:42