我有一个类实例的列表,它们具有实现的__getitem__
和__len__
方法。但是,当我尝试使用空数组和[:]
运算符从此列表中创建一个NumPy数组时,第一个列表元素的__getitem__
卡在了无限调用堆栈中。当我删除__len__
时,它起作用了。我在下面创建了一个MWE:
import numpy as np
class A:
def __init__(self, cid):
self.id = cid
def __len__(self):
return 1
def __getitem__(self, item):
return 1
obj_list = [A(1), A(4), A(2)]
test = np.empty(len(obj_list), dtype="object")
test[:] = obj_list
感谢您的提前帮助!
EDIT:无论我在__getitem__
中返回什么,其行为都保持不变
我有一个类实例的列表,它们具有实现的__getitem__和__len__方法。但是,当我尝试使用空数组和[:]运算符从此列表中创建NumPy数组时,...
当您在一种类型上同时定义__len__
和__getitem__
时,该类型看起来像一个容器或sequence