Ответ 1
Экспорт. Затем вы можете сделать:
from multiprocessing.dummy import list
... который является регулярным list
.
Без этой строки в пакете multiprocessing.dummy
не будет list
.
Это разумно иметь единый API через пакеты. Предположим, что все пакеты должны предлагать класс list
. Пакет a
решает предоставить пользовательскую реализацию, пакет b
однако хочет использовать list
от __builtins__
.
powerful/__init__.py:
from powerfulinternals import PowerfulList as list
from simple.simpleinternals import Something as whoo
simple/__init__.py:
list = list
from simpleinternals import Something as whoo
application.py:
try:
import powerful as api
else:
import simple as api
mylist = api.list()
woot = api.whoo()
Там больше причин делать такие вещи. Например, чтобы сделать его явным, что вы используете.
list = list
также можно рассматривать как оператор "если вы хотите изменить тип списков, которые я использую, измените его здесь".
В этом конкретном случае это первый. list
и dict
отображаются как:
manager = multiprocessing.dummy.Manager()
l = manager.list()
d = manager.dict()
И определение Manager
:
def Manager():
return sys.modules[__name__]
то есть. Manager.list = list
.