gpt4 book ai didi

python - 我可以覆盖 Python 列表显示吗?

转载 作者:行者123 更新时间:2023-11-28 16:53:39 25 4
gpt4 key购买 nike

我想改变 Python 列表显示的行为,这样它们就不会生成 list,而是生成我编写的 list 的子类。 (注意:我不认为这是个好主意;我这样做是为了好玩,而不是实际用途。)

这是我所做的:

old_list = list

class CallableList(old_list):
def __init__(self, *args):
old_list.__init__(self)
for arg in args:
self.append(arg)
def __call__(self, start, end=None):
if end:
return self[start:end]
return self[start]

list = CallableList

一旦完成,这将返回列表的第三个元素:

x = list(1, 2, 3)
print x(2)

但这仍然会报错:

x = [1, 2, 3]
print x(2)

错误非常简单:

Traceback (most recent call last):
File "list_test.py", line 23, in <module>
print x(2)
TypeError: 'list' object is not callable

我认为可能没有办法做到这一点,但我找不到任何明确说明的内容。有什么想法吗?

最佳答案

您不能轻而易举地覆盖用于内置类型的语法糖,因为这发生在编译器级别。始终显式调用构造函数。

关于python - 我可以覆盖 Python 列表显示吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3795591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com