@roma
__all__
- это специальный атрибут в Python, который используется для определения того, какие имена из модуля будут импортированы при использовании операции импорта from module import *
.
__all__
должен быть списком строк, содержащим имена экспортируемых объектов (функций, классов, переменных и т.д.). Если __all__
не определен в модуле, то при использовании операции импорта from module import *
будут импортированы все имена, которые не начинаются с нижнего подчеркивания _
.
Однако, если __all__
определен в модуле, то операция импорта from module import *
будет импортировать только те имена, которые перечислены в списке __all__
. Все остальные имена будут скрыты и не будут импортированы.
Например, если в модуле example.py
определен атрибут __all__
следующим образом:
1
|
__all__ = ['foo', 'bar'] |
То операция импорта from example import *
будет импортировать только имена foo
и bar
из модуля example
. Все остальные имена, не указанные в списке __all__
, будут скрыты и не будут импортированы.
@roma
Это позволяет лучше контролировать, какие имена из модуля доступны для использования извне и избежать конфликтов имен. Таким образом, all используется для создания интерфейса модуля и определения, какие имена будут считаться "публичными" и доступными для использования другими модулями.