我正在编写一个自定义django模型字段,它具有序列化和反序列化操作,在反序列化时,我使用import_by_path来获取类并初始化实例。
相反,我需要将一个实例序列化到数据库,在我的情况下,我需要获得模块的点符号。
我要问的是,我怎么做,例如我有日期时间模块
from datetime import datetime
如何以点表示法将datetime
输出到字符串"datetime.datetime"
?
答案 0 :(得分:7)
并不完全清楚你要问的是什么,但点符号相当于你在Python中的上述例子,例如:
import datetime
datetime.datetime
与
相同from datetime import datetime
datetime
我希望这是有道理的,如果你有任何其他问题,请告诉我。
这是一个更好的例子:
>>> import datetime
>>> datetime
<module 'datetime' from '/path/to/python'>
>>> from datetime import datetime
>>> datetime
<type 'datetime.datetime'>
编辑:看到澄清后,应该使用python inspect
模块完成。具体来说,如果您正在尝试获取定义特定类的模块:
import inspect
import datetime
inspect.getmodule(datetime).__name__
或
def dot_notation(your_module):
return your_module.__module__ + "." + your_module.__class__.__name__
以更一般的方式,您可以获得模块
答案 1 :(得分:0)
import inspect
from datetime import datetime
inspect.getmro(datetime)[0]
那应该返回'datetime.dateime'