Хорошо, я думаю, у меня есть довольно крутое решение.
Допустим, у вас есть файл a
и файл b
.
У вас есть def
или class
в файле b
, который вы хотите использовать в модуле a
, но у вас есть что-то еще, либо def
, class
, либо переменная из файла a
что вам нужно в вашем определении или классе в файле b
.
В нижней части файла a
вы можете после вызова функции или класса в файле a
, необходимого в файле b
, но до вызова нужной функции или класса из файла b
для файла a
, скажем import b
Затем, и вот ключевая часть , во всех определениях или классах в файле b
, которым требуется def
или class
из файла a
(назовем это CLASS
) Вы говорите from a import CLASS
Это работает, потому что вы можете импортировать файл b
без Python, выполняющего какие-либо операторы импорта в файле b
, и, таким образом, вы исключаете любой циклический импорт.
Например:
Файл a:
class A(object):
def __init__(self, name):
self.name = name
CLASS = A("me")
import b
go = B(6)
go.dostuff
Файл b:
class B(object):
def __init__(self, number):
self.number = number
def dostuff(self):
from a import CLASS
print "Hello " + CLASS.name + ", " + str(number) + " is an interesting number."
Вуаля.