我创建了一个里面有很多 numpy 数组的类。我创建了一个__getitem__
函数,它试图返回索引数组的类,如下所示:
MyClass[i].array1
相当于MyClass.array1[i]
我希望 __ getitem __ 返回引用,但它们正在返回副本,因此该分配不起作用。
print(MyClass[i].array1)
返回 0
MyClass[i].array1 = 10
print(MyClass[i].array1)
仍然返回 0
这是我正在使用的 _get_item_ 代码:
def __getitem__(self, indices):
g = copy.copy(self) # should be a shallow copy?
for key,value in g.__dict__.iteritems():
g.__dict__[key] = value[indices]
return g
我也试过:
def __getitem__(self, indices):
g = MyClass()
for key,value in self.__dict__.iteritems():
g.__dict__[key] = value[indices]
return g
和:
def __getitem__(self, indices):
g = MyClass()
g.__dict__ = self.__dict__
for key,value in g.__dict__.iteritems():
g.__dict__[key] = value[indices]
return g
请注意,最后一个实例似乎确实返回了引用,但不是我想要的方式。如果我使用最后一个代码索引我的类,它会对原始类中的数组执行索引和截断,所以:
g = MyClass[i].array1
截断并覆盖 MyClass 中的原始数组,使其仅具有索引 i 的元素,如下所示:
print(len(MyClass.array1))
返回 128
print(MyClass[0].array1)
返回 0
nowMyClass.array1
是一个浮点值,显然不是我想要的。
我希望这足够清楚,任何帮助将不胜感激。
我发现了这个,但我不太确定这是否适用于我的问题。