当前位置: 首页 > 知识库问答 >
问题:

Python-检索包中多个类下的所有函数

龙逸清
2023-03-14

我目前有一个这样的包结构:

common/
    a.py
    b.py
    c.py
    __init__.py
    .svn
util/
    util.py
    __init__.py

我想用util编写一个函数。py检索a.py、b.py、c.py中的所有函数

from os import listdir

files = listdir(directory_to_common)
for f in files:
    if '.py' in f and '__' not in f:
        module_name = f.split(.)[0]
        module = __import__(module_name)

我可以成功导入模块。

比我以前

inspect.getmembers(module) 

但是它返回了许多不需要的信息。从这里,我如何检索a.py、b.py、c.py?

#a.py, b.py, c.py has similar structure as follows:
class A:
    def __init__(self):
        .....
    def method1_in_a(self):
        .....
    def method2_in_a(self):
        .....

共有2个答案

蓝昊天
2023-03-14

你可以试试这个:

import inspect
from os import listdir
files = listdir(directory_to_common)
functions = [inspect.getmembers(__import__("{}.{}".format(directory_to_common, i[:-3])), inspect.isfunction) for i in files if i.endswith('.py') and not i.startswith('__')]
宰父子安
2023-03-14

要仅返回所需信息,请使用可选参数谓词。查找模块中的所有类和类中的所有函数的示例:

classes = inspect.getmembers(module, predicate=inspect.isclass)
for cls_name, cls in classes:
    functions = inspect.getmembers(cls, predicate=inspect.isfunction)
        for fn_name, fn in functions:
            print(cls_name, fn_name)

有关所有可用谓词的列表,请参阅检查模块文档(所有名为 inspect.isXYZ 的函数都是谓词)。

 类似资料:
  • 问题内容: 我想使用PHP函数从一条推文中检索所有主题标签。 我知道有人在这里问过类似的问题,但没有提示如何在PHP中精确地实现这一点。由于我对正则表达式不是很熟悉,所以不知道如何编写一个函数来返回tweet中所有主题标签的数组。 因此,如何使用以下正则表达式执行此操作: 问题答案: $tweet = “this has a #hashtag a #badhash-tag and a #goodh

  • 问题内容: 我认为以下伪代码很好地总结了我的问题… 由(拥有)拥有(拥有适当的字词?)。那么对象类型将如何调用? 起初我在想,但这是针对继承的类的。然后我想通过一个接口,我走对了吗? 问题答案: 如果dostuff是常规方法,则需要将Bar传递给实例。 请注意,Bar可能有很多所有者,但没有任何现实的方法来确定他们是谁。 编辑:您可能正在寻找内部类:示例和注释。

  • 问题内容: 我有两个索引和。在这些索引中,我具有以下文档类型: : 人 组织机构 角色 技能 : 产品展示 服务 专利 商标 服务标记 每种类型都有不同的字段。 我的问题: 在任何类型的任何字段中,跨一个或什至两个索引查询字符串“ abc”的最佳方法是什么? 我没有在文档中找到任何有助于这种搜索的内容。是否有可能看起来像: 预先感谢您提供的任何帮助。 问题答案: 无论是查询或查询将是你在找什么。

  • 我有一个cucumber框架,它满足API和UI功能文件的需求。所以,我有两个特性文件,一个用于API,另一个用于UI。类似地,我在步骤定义文件夹中创建了两个类,一个用于UI,另一个用于API。结构如下所示: 文件列表 --API的功能文件 --UI的功能文件 分步定义 --斯特普德法皮 --斯特普德菲 测试者 --UITestRunner ############################

  • 问题内容: 从ElasticSearch获取某个索引的所有_id的最快方法是什么?使用简单的查询是否可能?我的索引之一包含大约20,000个文档。 问题答案: 编辑:请也阅读@Aleck Landgraf的答案 您只想要elasticsearch-internal 字段吗?还是文档中的字段? 对于前者,请尝试 Note 2017更新: 该帖子最初包含在内,但此后名称已更改,并且是新值。 结果将仅包

  • 问题内容: 可以说我有一个Java程序包,其中包含所有继承自的类,我能以某种方式获得所有这些类吗?我正在锁定以下方面的东西: 这样有可能吗? 问题答案: 这是一个基本示例,假定类未打包JAR: