获取功能模块(独立定义)

时间:2018-06-29 21:22:31

标签: python-3.x function module

我有一个对象,该对象具有需要存储的功能(例如,在JSON中)。此类函数未绑定到对象也未进行修饰,而是在不同模块中独立定义。有没有办法以编程方式获取定义函数的模块?

我期望的是

import importlib

class FunctionBag(object):

  @property
  def functions(self)
    return self._functions

  def __init__(self, functions):
    self._functions = functions

  def to_dict_for_json(self):
    result = {}
    for key, fn, in self._functions.items():
      name = fn.__name__
      module = MAGIC(fn)
      result[key] = (module, name,)

  @classmethod
  def FromDictOfJson(cls, dct):
    functions = {}
    for key, value, in dct.items():
      module,name, = value
      module = importlib.import_module(module)
      functions[key] = getattr(module, name)
    return cls(functions)

有什么方法可以做MAGIC()吗?

1 个答案:

答案 0 :(得分:1)

>>> def foo():
...   pass
... 
>>> foo.__module__
'__main__'
>>> sys.modules[foo.__module__]
<module '__main__' (built-in)>