有没有办法在Python中的用户定义类上定义list(obj)方法?

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

可以实现方法

__str__(self)
来返回字符串。有对应的
__list__(self)
吗? (
__list__
不起作用!) .toList() 是正确的方法吗?

python python-3.x
3个回答
27
投票

没有直接的对应项,但

list()
是通过迭代参数来实现的。因此,实现迭代器协议
__iter__()
)或绑定索引
__len__()
__getitem__()
)。


3
投票

发电机:

def __iter__(self):
    return (i for i in [1,5,6,8])

列表:

def __iter__(self):
    return iter([1,5,6,8])

元组:

def __iter__(self):
    return iter((1,5,6,8))

0
投票
class A (list) :
    def __iter__(self):
        for i in range(len(self)):
            yield self[i]

a = A([1, 2, 3])

print(tuple(a))
© www.soinside.com 2019 - 2024. All rights reserved.