![](/img/trans.png)
[英]Optimising `__getitem__` and `__setitem__` for a sparse array in Python
[英]Defining __getitem__ and __setitem__ for a property in python
我有一个对象,其中包含一个名为_X
的大型数据表。 各种长度的数据示例端对端地放在_X
,我命名为_INDEX
的另一个表对示例编号->该示例所在的_X
范围中的映射进行编码。
我想要的是定义一个名为X
的属性,它具有自己的__getitem__
和__setitem__
,这样我就可以使用X[i,j]
访问第i
个示例的第j
个元素。 这是为了避免self._X[self._INDEX[i]:self._INDEX[i+1]][j]
写如self._X[self._INDEX[i]:self._INDEX[i+1]][j]
等令人费解的冗长的行。
我可以使用正确的__getitem__
和__setitem__
来创建包装器类,然后从我的@property
函数返回该包装器类,但我不想这样做。
首先定义一个包装器类,该包装器类定义所需的__getitem__
。
class Foo:
def __init__(self, table, index):
self.table = table
self.index = index
def __getitem__(self, k):
i, j = k
return self.table[self.index[i]:self.index[i+1]][j]
然后定义你的财产
@property
def X(self):
return Foo(self._X, self._INDEX)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.