Импорт определенной функции только из файла
У меня есть один файл, foo.py
import UnavailableModule
class Bob:
def useful_func(self, arg):
# Do useful stuff (doesn't use UnavailableModule)
И в другом файле bar.py
в том же каталоге, мне нужно useful_func()
, но не могу сделать это
from foo.Bob import useful_func
Потому что это приводит к
problem: [Error 126] The specified module could not be found
An exception has occurred, use %tb to see the full traceback.
С обратной связью
C:...bar.py in <module>()
----> 1 from foo.Bob import useful_func
C:...foo.py in <module>()
----> 1 import UnavailableModule
Можно ли просто получить useful_func()
только каким-то другим способом?
1 ответ:
Прежде всего ваш
useful_func
является методом экземпляра, вы можете импортировать его с целым классомBob
, например:from foo import Bob
Затем вы можете создать объект
Bob
и использовать свою функцию следующим образом:Но это не решает вашу проблему. Ваша проблема, как я читал, заключается в том, что импортb = Bob() b.useful_func('something useful i believe')
UnavailableModule
выполняется при импорте модуляfoo
.Ну, он будет запущен, потому что именно так работает импорт, вы можете предотвратить этот импорт с помощью такой конструкции:
class Bob: def useful_func(self, arg): pass if __name__ == '__main__': import UnavailableModule
Это предотвратит импорт вашего модуля
UnavailableModule
при импорте модуляfoo
из другого модуля. Однако я не уверен, что это хорошая практика. Но это работает.