импортировать только некоторые части большой библиотеки, но для удобства скрыть структуру библиотеки - PullRequest
0 голосов
/ 21 ноября 2018

Пожалуйста, посмотрите на пример.Можно ли этого добиться?

# 1. importing from a large package lpack
#    only those parts that are going to be used
from lpack import timers    # defines SomeTimer and other Timers
from lpack import triggers  # defines RegularTrigger and others Triggers
# not importing many many other lpack modules

# 2. in the *same .py file* not having to care
#    about the internal organization of the lpack
mytimer = lpack.SomeTimer()        # i.e. not timers.SomeTimer()
mytrigger = lpack.RegularTrigger()

У меня нет решения.Моя идея что-то вроде lpack = timers + triggers (не буквально, конечно).Лучше всего использовать автоматизированный способ (какой-то желаемый побочный эффект импорта).

1 Ответ

0 голосов
/ 21 ноября 2018

Как насчет этого:

from lpack.timers import *   
from lpack.triggers import *

mytimer = SomeTimer()
mytrigger = RegularTrigger()

Недостатком является то, что если оба пакета содержат методы с одинаковыми именами, один из них будет перезаписан (я ожидаю, что второй импорт перезапишет первый).Вы также должны быть осторожны, чтобы не иметь локальных методов с одинаковыми именами, так как это приведет к конфликтам.

...