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

Big*_*XKu 5 python class function

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

程序结构:

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

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

ChickenModule.py 有一个名为 ChickenStuff 的类,每当调用它时都会打印“I'm a Chicken” self.(something)

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

man*_*ter 4

有一个名为的内置库importlib可能正是您所需要的。我假设您想要列出课程。你需要inspect这个。

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)
Run Code Online (Sandbox Code Playgroud)