我有一个对象,该对象具有需要存储的功能(例如,在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()吗?
答案 0 :(得分:1)
>>> def foo():
... pass
...
>>> foo.__module__
'__main__'
>>> sys.modules[foo.__module__]
<module '__main__' (built-in)>