如何 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__
并检查类型以便能够直接向左添加浮点数和整数。
简单的问题。我有两个 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__
并检查类型以便能够直接向左添加浮点数和整数。