Вы наверное слышали фразу "wild import - зло". В коде это выглядит так

from my_super_module import *

Ответ почему это "зло" очень простой - вы импортируете всё - то что надо и то что не надо. А значит вы можете смело перегрузить какой-то метод. Как же быть? Можно импортировать только нужные переменные и функции/классы, что является правильным подходом. Но ведь должен быть альтернативный вариант.

Он есть - это переменная __all__ __all__ в Pythone - это список публичных объектов данного модуля.

Например, есть некий mymodule.py, в нем очень много объектов, и не требуется давать пользоваться ими всеми (например, какие-то приватные функции есть). В __all__ в mymodule.py вы списком определяете названия объектов, которые можно импортировать:

__all__ = ["MyClass", "MyClass2"]

И тогда конструкция

from mymodule import *

Импортирует только те объекты, которые вы описали в __all__.



Комментарии