Python Module Internal Representation and Introspection: Difference between revisions
Line 34: | Line 34: | ||
===<tt>__loader__</tt>=== | ===<tt>__loader__</tt>=== | ||
===<tt>__spec__</tt>=== | ===<tt>__spec__</tt>=== | ||
===<tt>__package__</tt>=== | |||
An empty string for a module, the name of the package for a package. | |||
===<tt>__path__</tt>=== | ===<tt>__path__</tt>=== | ||
The <code>__path__</code> attribute exists only for <code>module</code> instances that represent [[Python_Language_Modularization#Package|packages]], not for those instances that represent ordinary [[Python_Language_Modularization#Modules|modules]]. | The <code>__path__</code> attribute exists only for <code>module</code> instances that represent [[Python_Language_Modularization#Package|packages]], not for those instances that represent ordinary [[Python_Language_Modularization#Modules|modules]]. | ||
<code>__path__</code> contains the | <code>__path__</code> contains a list with the paths of the package root directories, where the component modules, [[Python_Language_Modularization#Subpackages|subpackages]], <code>[[Python_Language_Modularization#init_.py|__init__.py]]</code> and <code>[[Python_Language_Modularization#main_.py|__main__.py]]</code> live. |
Revision as of 03:54, 4 January 2023
Internal
Overview
The module Class
All module and package instances are represented internally as instances of the module
class.
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 of the module, as string.
import mymodule
assert mymodule.__name__ == 'mymodule'
__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.