【问题标题】:Override list(object)覆盖列表(对象)
【发布时间】:2019-07-10 17:09:35
【问题描述】:

如何覆盖list(object),其中object 是由类定义的对象。你能做类似的事情吗

class foo:
    def __list__(self):
        return [None] # In my real code I want it to return a object

如果有人找到我正在寻找的答案的问题,这也会很有帮助。

【问题讨论】:

  • “在我的真实代码中,我希望它返回一个对象” 那么返回那个对象?目前尚不清楚您到底想要达到什么目标,以及是什么阻碍了您实现目标
  • 对不起,如果我不清楚

标签: python-3.x


【解决方案1】:

您可以定义__iter__ 方法来使您的对象可迭代。 list 然后可以根据生成的迭代器创建结果。你也可以使用yield生成器语法:

class Foo:
    def __iter__(self):
        yield None

print(list(Foo())) # prints [None]

【讨论】:

  • 谢谢!这行得通。列表是否也依赖于___len____?
  • @RaymondPeng,不,它会累积一个生成器的所有结果,不管长度。
  • 顺便说一句,这个答案其实和stackoverflow.com/a/46627087/10818862很像
猜你喜欢
  • 1970-01-01
  • 2018-05-02
  • 1970-01-01
  • 2013-02-08
  • 1970-01-01
  • 2014-09-21
  • 2015-06-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多