Sco*_*God 1 python indexing syntax list python-3.x
在提出这个问题之后,它收到了关于你如何做这样的事情的评论:
>>> def a(n):
print(n)
return a
>>> b = a(3)(4)(5)
3
4
5
Run Code Online (Sandbox Code Playgroud)
是否可以使用这个或类似的概念来索引列表my_list(n)而不是my_list[n]?
您必须使用自定义类,并为其提供一种__call__特殊方法以使其可调用.list这里的子类很好用:
class CallableList(list):
def __call__(self, item):
return self[item]
Run Code Online (Sandbox Code Playgroud)
您不能使用它来分配索引,但只有项目访问才有效.切片需要您用来创建一个slice()对象:
a = CallableList([1, 2, 3])
a(2)
a(slice(None, 2, None))
nested = CallableList([1, 2, CallableList([4, 5, 6])])
nested(2)(-1)
Run Code Online (Sandbox Code Playgroud)
除此之外,您还必须创建一个自定义Python语法解析器来构建AST,然后从那里编译为字节码.