Получить модуль функции (определяется отдельно) - PullRequest
0 голосов
/ 30 июня 2018

У меня есть объект с набором функций, которые мне нужно сохранить (например, в 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 голосов
/ 30 июня 2018
>>> def foo():
...   pass
... 
>>> foo.__module__
'__main__'
>>> sys.modules[foo.__module__]
<module '__main__' (built-in)>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...