如何获得python模块的点表示法?

2024-05-23 23:30:24 发布

您现在位置:Python中文网/ 问答频道 /正文

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

相反,我需要将一个实例序列化到数据库中,在我的例子中,我只需要获得模块的点表示法。在

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

from datetime import datetime

如何将点表示法中的datetime输出到字符串"datetime.datetime"?在


Tags: 模块pathdjango实例from模型import数据库
2条回答

不完全清楚您要问什么,但dot notation与上面的Python示例相当,例如:

import datetime
datetime.datetime

^{2}$

我希望这是有道理的,如果你还有任何问题请告诉我。在

这里有一个更好的例子:

>>> import datetime
>>> datetime
<module 'datetime' from '/path/to/python'>
>>> from datetime import datetime
>>> datetime
<type 'datetime.datetime'>

编辑:在看到说明之后,应该使用pythoninspect模块来完成这项工作。特别是,如果您试图获取定义特定类的模块:

import inspect
import datetime

inspect.getmodule(datetime).__name__

或者

def dot_notation(your_module):
    return your_module.__module__ + "." + your_module.__class__.__name__

更一般地说,您可以获得模块

import inspect

from datetime import datetime


inspect.getmro(datetime)[0]

应该会回来的日期时间.日期时间'

相关问题 更多 >