如何获得python模块的点符号?

时间:2014-04-02 01:55:40

标签: python

我正在编写一个自定义django模型字段,它具有序列化和反序列化操作,在反序列化时,我使用import_by_path来获取类并初始化实例。

相反,我需要将一个实例序列化到数据库,在我的情况下,我需要获得模块的点符号。

我要问的是,我怎么做,例如我有日期时间模块

from datetime import datetime

如何以点表示法将datetime输出到字符串"datetime.datetime"

2 个答案:

答案 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'