我有一个使用 Numpy 的项目。其中一个类需要一组称为权重的矩阵。出于多种原因,最好将所有这些矩阵值存储为一个长向量,并让每个单独的矩阵成为其切片的 View 。
self.weightvector = asmatrix(rand(nweights, 1)) # All the weights as a vector
self.weights = list() # A list of views that have the 'correct' shape
for i in range(...):
self.weights.append(...)
如果类的用户执行类似 foo.weights[i] = bar
的操作,那么这些权重将不再是原始权重向量的 View 。
Python 是否提供了一种机制来定义 getter 和 setter,以便在诸如 foo.weights[i] = bar
之类的索引完成时定义 getter 和 setter?
最佳答案
当然。您想重写类上的 __setitem__ 方法。
class Weights(list):
def __setitem__(self, key, value):
....
这是文档的链接:
http://docs.python.org/2/reference/datamodel.html#object.__setitem__
关于python - 类似于列表/元组的 setter 和 getter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15001633/