Что такое Python хорошая практика для импорта и предложения дополнительных функций?

Читайте эту статью здесь: https://tryolabs.com/blog/2013/07/05/run-time-method-patching-python/

следует:

foo.py

class Foo():
    def create_object():
        return 'Creating object 1'

    def post(self):
        result = self.create_object()

bar.py

class Bar(Foo):

    def create_object(self):
        return 'Creating object 2'

    def run(self):
        Foo.create_object = self.create_object

26
задан CharlesB 25 February 2013 в 15:26
поделиться

3 ответа

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

И btw, при использовании кроме: Я всегда добавлял бы, что определенное исключение к нему (здесь ImportError) к не случайно фиксирует несвязанные ошибки.

13
ответ дан Richard 28 November 2019 в 06:51
поделиться

try: метод не должен быть глобальным —, он может использоваться в любом объеме и таким образом, модули могут быть "лениво загружены" во времени выполнения. Например:

def foo():
    try:
        import external_module
    except ImportError:
        external_module = None 

    if external_module:
        external_module.some_whizzy_feature()
    else:
        print("You could be using a whizzy feature right now, if you had external_module.")

, Когда Ваш скрипт будет запущен, никакая попытка не будет предпринята для загрузки external_module. Первый раз foo() называют, external_module (при наличии) загружается и вставляется в локальный объем функции. Последующие вызовы к foo() повторно вставляют external_module в его объем, не будучи должен перезагрузить модуль.

В целом, лучше позволять Python обработать логику импорта —, это делало его некоторое время. :-)

46
ответ дан Jules G.M. 28 November 2019 в 06:51
поделиться

Один способ решить проблему различных зависимостей для различных функций состоит в том, чтобы реализовать дополнительные опции как плагины. Тем путем пользователь управляет, какие опции активированы в приложении, но не ответственно за разыскивание зависимостей сам. С той задачей затем справляются во время установки каждого плагина.

-2
ответ дан regan 28 November 2019 в 06:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: