繁体   English   中英

在python中为属性定义__getitem__和__setitem__

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM