跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 如何找到类和方法的实现?
未分類
24 11 月 2020

如何找到类和方法的实现?

如何找到类和方法的实现?

資深大佬 : UN2758 3

  1. socket 初始化之后 connect 方法和 getsockname 方法的实现位置怎么找啊?
  2. socket 类继承的是_socket.socket 父类,但是没看到父类的实现代码,这是猴子补丁吗,这样动不动就写个方法名,里面给个 pass 的类感觉很常见,但是找这种类的实现思路是啥呢?

python 代码如下

import socket   def get_host_ip():     try:         s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)         s.connect(('8.8.8.8', 80))         ip = s.getsockname()[0]     finally:         s.close()      return ip 

大佬有話說 (13)

  • 主 資深大佬 : UN2758

    如何找到类和方法的实现?

  • 資深大佬 : wuwukai007

    可能是 c 写的

  • 資深大佬 : u823tg

    这个不是可能是 c 写的。

  • 資深大佬 : ho121

    类似 socket 这样的应该是调用的系统函数,具体实现实在系统中,当然没法直接看到源码

  • 資深大佬 : julyclyde

    https://github.com/python/cpython/blob/master/Lib/socket.py#L51
    这里 import 了一个“下划线 socket”库进来

    https://github.com/python/cpython/blob/master/Modules/socketmodule.h#L203
    https://github.com/python/cpython/blob/master/Modules/socketmodule.c

  • 資深大佬 : DoctorCat

    这种类是 stub,用来告诉你继承关系和方法属性的,真正的实现是在 C 写的扩展库_socket 中,如果不做个 stub,你就不知道这库都包含哪些对象和相关方法属性了。

  • 資深大佬 : lithbitren

    一般是去官方文档对应模块页面,然后在页首找到源码,点进去以后就是 5 那堆仓库链接了,python 部分应该是可以直接跳转的,可以发先是_socket.socket 引进来的,所以直接在仓库里搜_socket 也是可以定位的。

  • 主 資深大佬 : UN2758

    @wuwukai007 #2
    @u823tg #3
    @ho121 #4
    @julyclyde #5
    @DoctorCat #6
    @lithbitren #7
    感谢各位大佬的帮助
    https://github.com/python/cpython/blob/master/Lib/socket.py#L51
    这个 socket.py 文件为啥不能从 IDE 里直接点击跳转找到呢?

  • 資深大佬 : julyclyde

    @UN2758 IDE 是不是忽略标准库?

  • 資深大佬 : rainfd

    @UN2758 是你 ide 有问题吧,我用 vscode 能跳过去的

  • 資深大佬 : no1xsyzy

    你是不是 import 路线上预编译的遮蔽了 .py

  • 主 資深大佬 : UN2758

    谢谢各位大佬,我看见了,但是真正的用 C 写的 SocketType 类是怎么加载到 python 里的呢,_socket.py 文件定义的是没实现方法的抽象类啊

  • 資深大佬 : frostming

    @UN2758 上的回复你没好好看

    1. 实现是 C 语言,你跳不过去也看不了
    2. 你能跳过去只是因为 IDE(你用的大概是 Pycharm)放了一个 stub 文件,只是告诉你类里面有哪些成员,是个假的空壳

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具