2

特定のオブジェクトがモジュールであるかどうかをPythonで確認するにはどうすればよいですか?

これが私が試したことです:

>>> import sys
>>> sys.modules["sys"].__class__
<class 'module'>
>>> isinstance(sys.modules["sys"], module)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'module' is not defined
>>> sys.modules["sys"].__class__.__module__
'builtins'
>>> import builtins
>>> builtins.module
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'module'
4

3 に答える 3

7
>>> import sys, types
>>> isinstance(sys, types.ModuleType)
True

typesモジュールは他の多くのタイプも提供します:

>>> dir(types)
['BooleanType', 'BufferType', 'BuiltinFunctionType', 'BuiltinMethodType', 'ClassType', 'CodeType', 'ComplexType', 'DictProxyType', 'DictType', 'DictionaryType', 'EllipsisType', 'FileType', 'FloatType', 'FrameType', 'FunctionType', 'GeneratorType', 'GetSetDescriptorType', 'InstanceType', 'IntType', 'LambdaType', 'ListType', 'LongType', 'MemberDescriptorType', 'MethodType', 'ModuleType', 'NoneType', 'NotImplementedType', 'ObjectType', 'SliceType', 'StringType', 'StringTypes', 'TracebackType', 'TupleType', 'TypeType', 'UnboundMethodType', 'UnicodeType', 'XRangeType', '__builtins__', '__doc__', '__file__', '__name__', '__package__']
>>> 
于 2012-07-09T21:31:05.727 に答える
5

inspect.ismoduleは、入手できる最も単純なものです。

import inspect
inspect.ismodule(inspect)
于 2012-07-09T21:37:31.907 に答える
-2

if type(obj) == type(__builtin__)助けるべき

于 2012-07-09T21:29:42.660 に答える