对于在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'>
为什么会出现这种差异?
答案 0 :(得分:0)
calendar
模块是纯python,而datetime
模块是扩展。
根据文档,inspect.getmodule()
旨在检索有关源代码的信息,因此它对使用扩展模块创建的对象所做的工作显然有限。