我有一个带有我需要存储的函数字典的对象(例如,在 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() 所做的事情?
>>> def foo():
... pass
...
>>> foo.__module__
'__main__'
>>> sys.modules[foo.__module__]
<module '__main__' (built-in)>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句