У меня есть проект с файловой структурой, как этотИмпорт второй раз внутри экземпляра класса
main.py
input/
__init__.py
foo.py
Внутри магистральный я импортировать Foo и создать экземпляр с помощью этих строк:
основной. ру
from input.foo import Foo
foo = Foo()
Внутри foo.py мне нужно использовать многопоточность, поэтому я импортировать его и создать поток в инициализации.
foo.py
from threading import Thread
class Foo
def __init__(self):
newThread = Thread()
Позже я решил, что было бы полезно иметь резьбу в main.py поэтому я также импортировать его там с помощью from threading import Thread
. Все работало так, как должно было до этого момента. Я думал, что было избыточно импортировать Thread
дважды во время выполнения, поэтому я удалил верхнюю строку из foo.py и снова запустил ее. На этот раз я получил NameError: global name 'Thread' is not defined
, когда программа достигла линии newThread = Thread()
.
Есть ли способ для импорта в main.py и не импортировать его снова в foo.py? Неправильно импортировать один и тот же класс дважды в одну программу.
«Неправильно импортировать один и тот же класс дважды в одну программу». - Зачем? Это совершенно нормально. Это не вызовет проблемы с двойной инициализацией, и сам Python делает это несколько раз, прежде чем ваш код даже запустится. – user2357112
Технически да, вы могли бы передать 'Thread' в инициализатор' Foo', но это действительно не так, чтобы импортировать модуль один раз в файл. – L3viathan