Python Module Internal Representation and Introspection: Difference between revisions
Line 8: | Line 8: | ||
All [[Python_Language_Modularization#Module_Internal_Representation_and_Introspection|module]] and [[Python_Language_Modularization#Package_Internal_Representation_and_Introspection|package]] instances are represented internally as instances of the <code>module</code> class. | All [[Python_Language_Modularization#Module_Internal_Representation_and_Introspection|module]] and [[Python_Language_Modularization#Package_Internal_Representation_and_Introspection|package]] instances are represented internally as instances of the <code>module</code> class. | ||
==Checking whether an Instance is a Module== | |||
==Attributes== | ==Attributes== |
Revision as of 18:51, 4 January 2023
Internal
Overview
The module Class
All module and package instances are represented internally as instances of the module
class.
Checking whether an Instance is a Module
Attributes
All object instances declared in the module (variables, functions, etc.) become attributes of the module instance and they are accessible with inspect.getmembers()
. Additionally, the following special attributes are present:
__name__
The __name__
special variable contains the name of the module, when it was imported, as string.
import mymodule
assert mymodule.__name__ == 'mymodule'
When the module is executed directly with python mymodule.py
, it is never imported, so __name__
is set to the "__main__" string.
__file__
Once imported, the file associated with the module can be determined using the module object's __file__
attribute, as string:
import mymodule
[...]
print(mymodule.__file__)
The directory portion of __file__
should be one of the directories in sys.path
.
__doc__
The content of the module docstring, if declared, otherwise None
.
__cached__
__loader__
__spec__
__package__
An empty string for a module, the name of the package for a package.
__path__
The __path__
attribute exists only for module
instances that represent packages, not for those instances that represent ordinary modules.
__path__
contains a list with the paths of the package root directories, where the component modules, subpackages, __init__.py
and __main__.py
live.