首页 > python 如何查看内置成员的代码?

python 如何查看内置成员的代码?

请问,如何查看如 list tuple str 等内置对象及其属性和方法的代码?
尝试了 inspect.getsource 方法,但是貌似内置成员是无法获取其源码的。
主要是想定义一些内置对象的子类,以实现特殊的一些功能,比如假如我想实现:

a = [1, 2, 3, ..., 9]

这样的赋值形式,从而获得:

这样的结果。

就需要改写 list 的某些方法,但是我不知道需要改写哪个方法(比如 __init__还是 __setitem__或者其他),也不知道这些内置方法参数如何设置,怎么实现,如果能够看到源码我想可能会好点。


楼上回答的很到位, built-in基本都是c编写, 属于python解释器直接支持的部分, 标准库则是使用python编写的扩展. 如果你这是改写增加以下工程, 建议你使用类自己继承, 并添加自己的函数.


如果要实现 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!

【热门文章】
【热门文章】