Есть ли способ переименовать функцию во время импорта?

#python

Вопрос:

У меня есть такой класс, как этот:

 # in bar.py
class Bar:
  ...
  @staticmethod
  def foo():
    ...
 

Есть ли способ импортировать Bar.foo в другой файл python, но переименовать его, чтобы он назывался просто foo ? Я пробовал import bar , from bar import Bar но ничего из этого не работает.

Комментарии:

1.Один из вариантов: import bar foo = bar.Bar.foo

Ответ №1:

Вы могли бы просто сделать

 from bar import Bar
foo = Bar.foo
 

Комментарии:

1. Есть ли простой способ сделать эти псевдонимы? Существует довольно много функций, Bar которые я хотел бы импортировать

2. Я бы рекомендовал вам просто импортировать класс и позвонить Bar.foo() и т. Д.

3. @JRR вы рассматривали возможность не использовать кучу статических методов, а просто использовать функции уровня модуля? В противном случае просто используйте Bar.foo()

4. @JRR вы не можете импортировать элементы объекта ни на каком языке, просто используйте сам объект или переместите функцию за пределы класса(они в любом случае статичны), а затем импортируйте их по своему усмотрению

Ответ №2:

из бара.Бар импорт foo как bar_Bar_foo

особенно полезно, когда вам нужен как requests модуль, так и Flask.requests в одном файле, чтобы избежать столкновения:

 from Flask import requests as f_requests
import requests
 

Комментарии:

1. Панель находится в своем собственном файле bar.py. значит, это не сработает, как я думал?

2. Вы не можете импортировать метод из класса. Я получаю ModuleNotFoundError .

3. отредактировано — from _filename_ import _classname_ или даже from _filename_._classname_ import _method_ , но не уверен, что последнее сработает