可以在模块上运行吗?

Eit*_*anG 0 python

我正在向模块添加动态属性,在使用之前我想验证添加的属性是否存在(在模块中).

hasattr签名是:

hasattr(object, name)
Run Code Online (Sandbox Code Playgroud)

模块不是对象,那么如何验证添加属性的存在?

Mar*_*ers 11

Python模块一个对象.hasattr()工作得很好.

演示:

>>> import os
>>> type(os)
<type 'module'>
>>> os
<module 'os' from '/Users/mj/Development/venvs/stackoverflow-2.7/lib/python2.7/os.pyc'>
>>> hasattr(os, 'sep')
True
>>> hasattr(os, 'foobar')
False
Run Code Online (Sandbox Code Playgroud)

如果您有一个包含模块名称的字符串,那么您可以在sys.modules映射中查找模块对象:

>>> import sys
>>> sys.modules['os']
<module 'os' from '/Users/mj/Development/venvs/stackoverflow-2.7/lib/python2.7/os.pyc'>
 >>> hasattr(sys.modules['os'], 'sep')
True
Run Code Online (Sandbox Code Playgroud)