请问,如何查看如 list tuple str 等内置对象及其属性和方法的代码?
尝试了 inspect.getsource 方法,但是貌似内置成员是无法获取其源码的。
主要是想定义一些内置对象的子类,以实现特殊的一些功能,比如假如我想实现:
a = [1, 2, 3, ..., 9]
这样的赋值形式,从而获得:
这样的结果。
就需要改写 list 的某些方法,但是我不知道需要改写哪个方法(比如 __init__还是 __setitem__或者其他),也不知道这些内置方法参数如何设置,怎么实现,如果能够看到源码我想可能会好点。
如果要实现
a = [1, ..., 9]
得到a
为[1,2,3,4,5,6,7,8,9]
,相当于要修改 Python 本身处理list
字面量的机制,也就是需要直接修改 Python 这个程序。但是,既然
...
是值Ellipsis
的字面量,那么写一个函数展开[1, Ellipsis, 9]
作为你的list
子类的构造方法当然是可以的。不过,使用
a = list(range(1,9+1))
不是更简单吗?回答问题,
list
相关实现的源代码在这里: https://hg.python.org/cpython/file/tip/Objects/listobject.c 。我觉得对于实现你的预期没有帮助。要从文法上修改 Python,需要修改这个 https://hg.python.org/cpython/file/tip/Grammar/Grammar 文件,然后编写许多 C 代码,然后重新编译一个你自己的特殊的 Python,……,good luck!