列出Python包中具有相同名称的方法

时间:2017-10-24 14:56:02

标签: python python-2.7

我正在编写一个Python包,其中我有不同的Classes,其中包含一个名为map的常用方法。该方法总是返回一个函数,并且打算在另一个包的方法中使用。有没有办法列出我的包中名为map的所有方法?

2 个答案:

答案 0 :(得分:2)

你需要对这一点进行一些反思。您需要的步骤是加载给定模块的引用,获取类列表,然后检查每个类以确保它具有方法map

import sys, inspect

def map_classes(module_name):
  for name, obj in inspect.getmembers(sys.modules[module_name]):
    if inspect.isclass(obj):
      try:
        if callable(getattr(obj, 'map')):
          yield name
      except AttributeError:
        pass

此方法将返回具有map方法的模块中所有类的所有名称的生成器。请注意,如果它们具有map属性,则不会返回该类的名称。

答案 1 :(得分:0)

您不需要inspect包。你需要的一切都是内置的。

>>> import numpy as np
>>> for name, obj in np.__dict__.items():
...   if hasattr(obj,"tolist"):
...     print name, obj