如图,这是 python 内建的类的原代码,一堆 pass,那 dict 的功能靠 pass 实现的?这代码也太魔幻了吧。
1
neoblackcap 2018-10-04 00:03:25 +08:00
dict 是通过 C 语言实现的,据我理解,__built__.py 只是一个 stub 而已
|
2
chengluyu 2018-10-04 00:12:02 +08:00
都说了是 built-in 了……
|
3
innoink 2018-10-04 00:13:31 +08:00 via Android
这个是编辑器生成的假文件
|
5
xiaojie668329 2018-10-04 00:25:55 +08:00
这些方法可能是它的抽象基类的抽象方法,必须实现的,然后这里继承了但是不提供实现细节,你可以自己继承实现。我猜的。。
|
6
wwqgtxx 2018-10-04 00:26:19 +08:00 via iPhone
@lsj8924 问题是你这个__builtin__.py 只是 pycharm 自带的,并不是 python 自带的,cpython 解析器的文件库中从来就没这个文件
|
7
lsj8924 OP @wwqgtxx 还是老哥稳啊。居然知道是 pycharm。我看了看路径,你是对的,确实是生成的临时文件。
https://stackoverflow.com/questions/24266114/pycharm-what-is-python-stubs 说的比较清楚。 |
9
chengluyu 2018-10-04 01:04:32 +08:00
@lsj8924
built-in 的意思就是内建实现,实现细节不会暴露给你,比如 gcc 的一系列 built-in functions。 CPython 的 dict 也确实是在解释器层面实现的,你可以从 CPython 的源码中翻出来 dict 的 C 实现,但是绝对不会看到 Python 写的 dict 实现。 |
10
PythonAnswer 2018-10-04 02:09:42 +08:00
stub 帮助你跳转进去看看结构的. 这个东西想看细节, 只能看源码+文档.
|
11
lance6716 2018-10-04 10:30:47 +08:00 via Android
|
12
ysc3839 2018-10-04 12:43:05 +08:00 via Android
想顺便问一个问题,我自己用 C++ 写了个 Python 的模块,写代码的时候会提示找不到这个模块,有没有办法像这里的 __builtin__.py 一样自己写个声明?
|
13
popbones 2018-10-04 13:30:41 +08:00
|
14
neoblackcap 2018-10-04 15:52:12 +08:00 via iPhone 1
@ysc3839 假如是 3.5 以后的扩展,你可以试试写一个 pyi 文件
|