在NumPy数组分配期间无限__getitem__调用[重复]

问题描述 投票:0回答:1

我有一个类实例的列表,它们具有实现的__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数组时,...

python numpy
1个回答
0
投票

当您在一种类型上同时定义__len____getitem__时,该类型看起来像一个容器或sequence

© www.soinside.com 2019 - 2024. All rights reserved.