【发布时间】:2011-01-13 03:21:36
【问题描述】:
在 Python 中从另一个第三方模块重新定义类方法有多糟糕?
其实用户可以创建包含numbers with uncertainty的NumPy矩阵;理想情况下,我希望他们的代码不加修改地运行(与代码操作浮点矩阵时相比);特别是,如果矩阵的逆矩阵m 仍然可以用m.I 获得,那将是很好的,尽管m.I 必须用我自己的代码计算(原来的I 方法不起作用,一般)。
重新定义 numpy.matrix.I 有多糟糕?一方面,它确实篡改了我不喜欢的第三方代码,因为它可能不健壮(如果其他模块也这样做呢?...)。另一个问题是新的 numpy.matrix.I 是一个包装器,当原始的 numpy.matrix.I 可以实际应用以获得逆矩阵时,它会产生很小的开销。
对 NumPy 矩阵进行子类化并仅更改其 I 方法是否更好?这将迫使用户更新他们的代码并使用m = matrix_with_uncert(…) 创建不确定的数字矩阵(而不是继续使用numpy.matrix(…),作为浮点矩阵),但也许这是一个不便,应该接受鲁棒性?矩阵求逆仍然可以使用m.I 执行,这很好……另一方面,如果用户可以直接使用numpy.matrix() 构建他们所有的矩阵(浮点数或具有不确定性的数字),那就太好了,而不必费心检查数据类型。
欢迎提出任何意见或其他方法!
【问题讨论】:
标签: python numpy overriding