inspect.getmodule对datetime的差异

时间:2014-12-04 02:52:23

标签: python python-2.7

对于在python代码中定义的类,inspect.getmodule适用于对象和类型

>>> import calendar
>>> c = calendar.Calendar()
>>> print inspect.getmodule(c)
<module 'calendar' from '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/calendar.pyc'>
>>> print inspect.getmodule(type(c))
<module 'calendar' from '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/calendar.pyc'>

但是在日期时间,它不适用于对象:

>>> import datetime
>>> d = datetime.datetime.now()
>>> print inspect.getmodule(d)
None
>>> print inspect.getmodule(type(d))
<module 'datetime' from '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/datetime.so'>

为什么会出现这种差异?

1 个答案:

答案 0 :(得分:0)

calendar模块是纯python,而datetime模块是扩展。

根据文档,inspect.getmodule()旨在检索有关源代码的信息,因此它对使用扩展模块创建的对象所做的工作显然有限。