【发布时间】:2012-09-21 20:20:35
【问题描述】:
我正在使用一个模拟 python 列表的类。当我在没有索引的情况下访问它时,我想将它作为 python list() 返回。
使用普通列表():
>>> a = [1,2,3] >>> 一个 [1,2,3]我得到的,基本上是:
>>> a = MyList([1,2,3]) >>> 一个我不知道哪种 dunder 方法(如果有)可以让我自定义此行为?
我认为会是 __ 得到 __ ?虽然 list() 没有实现 get/set/delete - 我猜是因为它是内置的?
【问题讨论】:
-
我发布了一个答案,但实际上我不确定你的意思。你能举例说明你想要达到的目标吗?如果您想在控制台中键入
a时显示您的列表,那么您正在寻找__repr__方法 -
当您只输入名称时,您在交互式 shell 中看到的是 repr (REPResentational) 字符串。与第一个相同,其中一个真正的列表发出一个看起来像源代码的字符串。理想情况下,
eval(repr(object))应该适用于简单类型。因此,当您这样显示它时,您不是在“访问”它,而是“串化”它。 -
是的,这正是我想要的。我对那里真正发生的事情感到困惑。
-
@VincentSavard 实际上您发布的答案是正确的。