重新定义Pythons内置数据类型

tMC*_*tMC 3 python list subclass object built-in-types

是否有可能重新定义括号[]使用哪个对象?

我可以子类化该list对象,但是如何让解释器使用我的子类代替buildin列表对象?可能吗?

(我很确定我使用的是错误的条款 - 随意编辑)

>>> class mlist(list):
...     def __init__(self):
...         list.__init__(self)
...     def __getitem__(self, item):
...         return list.__getitem__(self, item) * 2
... 
>>> testlist = mlist()
>>> testlist.append(21)
>>> testlist[0]
42
>>> list = mlist() # maybe setting the 'list' type will do it?
>>> testlist = []
>>> testlist.append(21)
>>> testlist[0]
21                 # Nope
>>> 
Run Code Online (Sandbox Code Playgroud)

我没有实际用途 - 只是好奇.

MRA*_*RAB 7

括号是该语言的一部分.它们用于创建列表.重新定义它是不可能的(也不可取!).

  • 有可能,非常非常困难. (2认同)
  • @Ignacio:我在Python上称这个构建你自己的语言和解释器.它不再是Python了. (2认同)