关于python:查找哪个脚本包含特定的函数或类

Finding which script contains a particular function or class

How can I find out the file path and correct script containing a particular function or class of a module?

例如:假设我想看看tkinter.Button()的tkinter源代码。

我找到了用于tkinter的__init__.py文件的位置,使用:

1
2
3
>>>import tkinter
>>>tkinter.__file__
'C:\\Users\\Simon\\AppData\\Local\\Programs\\Python\\Python36-32\\lib\\tkinter\\__init__.py'

我搜索了那个文件夹,但找不到任何名为Button的函数或类。我猜它包含在运行时中,不是一个.py文件,但是我不确定,我想确定这一点。

在Python文档的特殊属性中,我也找不到任何有用的东西。

欢迎提出任何建议,但请注意,本文不仅针对tkinter模块,而且针对大多数软件包或模块,tkinter只是一个例子。


tkinter对象不作为python源代码实现。见tkinter文件:

The Tk interface is located in a binary module named _tkinter. This module contains the low-level interface to Tk, and should never be used directly by application programmers. It is usually a shared library (or DLL), but might in some cases be statically linked with the Python interpreter.

参见tkinter库文档链接到的tcl/tk文档。tcl/tk文档反过来链接到https://core.tcl.tk/,这是该项目开发的中心枢纽(Python外部)。

下面的链接可以找到项目源代码的Github镜像,其中包括tk源代码,在这里可以找到tkButton.c源文件;这是核心按钮小部件实现。

也涉及到一些python代码,但是那里的类定义主要是为了将命令传递给本机tk库。


Any suggestions are welcome but please note that this post is not set only on the >tkinter module but most packages or modules, tkinter just being an example.

这很好地回答了您的问题(对于一般情况),如何在Python中获取类的文件路径?

我们还可以看到类按钮(widget)是在init中定义的,但这是@martijn pieters编写的一个包装器。