我想在返回代理对象的类上创建某种描述符。当索引时,代理对象检索对象的成员并对其应用索引。然后返回总和。在
例如
class NDArrayProxy:
def __array__(self, dtype=None):
retval = self[:]
if dtype is not None:
return retval.astype(dtype, copy=False)
return retval
class ArraySumProxy(NDArrayProxy):
def __init__(self, arrays):
self.arrays = arrays
@property
def shape(self):
return self.arrays[0].shape
def __getitem__(self, indices):
return np.sum([a[indices]
for a in self.arrays],
axis=0)
当我将实际数组作为成员变量时,此解决方案运行良好:
^{pr2}$现在我已经将数组更改为Python描述符(cluster_signal
实现了返回numpy数组的描述符协议):
这不起作用,因为append语句附加了描述符调用的结果。我需要的是附加一个绑定方法或类似的代理。修改我的解决方案的最好方法是什么?简而言之:变量basic_in
和explanation_in
是numpy
数组。它们现在是描述符。我想开发一些ArraySumProxy
的版本,它可以处理描述符,而不需要实际的数组。在
当你访问一个描述符时,它被计算出来,你只得到它的值。因为你的描述符并不总是返回同一个对象(我想你不能避免它?),您不想在初始化代理时访问描述符。在
避免访问它的最简单方法是记住它的名称,因此不要:
你需要:
^{pr2}$然后,当然,
variable_evidence
必须意识到这一点,并执行getattr(obj, name)
来访问它。在另一个选择是让描述符返回一个稍后计算的代理对象。我不知道你在做什么,但这可能是太多的代表,好品味。。。在
编辑
或者。。。您可以存储getter:
^{3}$相关问题 更多 >
编程相关推荐