python - 如何在不导入的情况下从python文件中获取函数

标签 python function class

我正在制作一个程序来检测 python 文件并读取它们的类和函数以便调用。如何在不导入的情况下列出另一个 python 文件中的函数?我该如何称呼他们?

程序结构:

  • Index.py(主py文件)
  • /内容
    • /模块
      • 模块.py
      • ChickenModule.py(我想从中获取功能的模块)

Modules.py 列出/Modules 中的所有 python 文件并将它们存储在列表中。 Index.py 调用 Modules.py 中的函数(只是为了让事情不那么困惑)

ChickenModule.py 有一个名为 ChickenStuff 的类,它在调用 self.(something) 时打印“I'm a chicken”。

该程序的目标是让用户能够将 .py 文件放入模块中,并在运行 index.py 时列出所述 .py 文件的函数和类。

最佳答案

有一个名为 importlib 的内置库可能就是您所需要的。我假设您想要列出类(class)。为此,您需要检查

import os
import os.path as path
import importlib
import inspect

# get a list of all files in Content/Modules
filelist = os.listdir("Content/Modules")

# import every file ending in .py
for fname in filelist:
  if path.splitext(fname)[1] == 'py':
    my_module = importlib.import_module(path.splitext(fname)[0]) # load the module
    for _, obj in inspect.getmembers(my_module): # iterate through members
      if isinstance(obj, type): # check if members is a class
        print(obj)

关于python - 如何在不导入的情况下从python文件中获取函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57120512/

相关文章:

C++ 函数 "size_t PASCAL"

javascript - 扫描 Javascript 中的滥用功能和模式

python - Azure 功能应用程序未显示在 Azure 门户中

swift - 在 swift 结构上改变类属性

python - PySide:将数据从 QML 传递到 Python

python - Pandas 0.23 groupby 和 pct 更改未返回预期值

python - 使用 python 和 bs4 抓取后的不同数据

python - 在 python 2.7 中从 tkinter 导入 ttk 的问题

PHP 4 - 类中的变量

c# - 我可以在同一个命名空间中使用同名的类和接口(interface)吗?