python - TypeError: 不支持的操作数类型 -: 'Position' 和 'Position'
问题描述
假设我有课
class Position():
def __init__(self, line, column):
self.line = line
self.column = column
我已经创建了delta
,但类型的对象Position
不能用作参数。
delta = lambda position1, position2 : tuple(np.abs(np.subtract(position1, position2)))
假设position1 = Position(1,2)
和position2 = Position(5,6)
。有没有办法在delta(position1, position2)
不产生错误的情况下运行?
解决方案
您将不得不在您的课程中创建一个__sub__
和__abs__
魔术方法。此外,如果您想使用 and 的数组position1
,position2
您还必须实现一个__array_wrap__
魔术方法。
另外,我觉得这里的使用不是tuple
很合适。如果您也想使用它,则必须更改类的实现Position
并返回一个Sequence
对象。
class Position:
def __init__(self, a, b):
self.a, self.b = a, b
def __sub__(self, other):
return Position(self.a - other.a, self.b - other.b)
def __abs__(self):
return Position(abs(self.a), abs(self.b))
推荐阅读
- java - 如何在数组中按姓氏搜索?
- sorting - 将多个输入文件分类为单个输出文件,并带有尾标标记每个输入文件的结束位置?
- typescript - 当返回 promise 的函数必须是异步的时,JS 错误有助于防止 typescript 错误 @typescript-eslint/promise-function-async
- r - Creating line graph in ggplot2
- r - R中数据框的新%列
- python - 如何使用 scipy.spatial 的 Voronoi 包选择自定义颜色来填充 Voronoi 图的区域?
- html - 服务器不断向客户端发送“text/html”数据
- node.js - 使用 npm start 启动 mongodb
- javascript - 如何在多个配对 div 上应用 mouseenter/mouseleave
- node.js - 如何使用单个 server.js 文件运行 react 和 express,侦听单个端口以进行生产?