Форум сайта python.su
Стандартная проблема новичка наверное уже разжёвывалась несколько раз, но почему то не могу найти вменяемого понятного ответа.
Вот есть код
файл test.py
from test2 import testus2
class testus1:
def __init__(self):
self.x=10
def run(self):
self.x *=10
print self.x
x = testus1()
x.run()
from test import testus1
class testus2(testus1):
def __init__(self):
self.x=10
def run(self):
self.x *=10
Офлайн
по-моему, это архитектурная ошибка, просто незачем так делать
Офлайн
pasaranaxМне просто сложно понять почему если я всё держу в одном файле я могу так делать, а если я хочу разнести код по файлам то мне нужен жёсткий рефакторинг.
по-моему, это архитектурная ошибка, просто незачем так делать
Отредактировано (Май 16, 2010 03:18:40)
Офлайн
Не хочется разжевывать, почему сильные зависимости - далеко не всегда хорошо. И как эту проблему решают интерфейсы и фабрики…
И тем не менее циклические импорты иногда бывают нужны.
Самый, наверное, простой способ: вспоминаем, что import можно делать еще и из функции
module a
class A(object):
def __init__(self):
from b import B
self.class_B = B
def f(self):
return self.class_B()
from a import A
class B(A):
pass
Офлайн
Андрей СветловНет ну такой вариант мне понятен, но разве если я допишу в module a в конец
Не хочется разжевывать, почему сильные зависимости - далеко не всегда хорошо. И как эту проблему решают интерфейсы и фабрики…
И тем не менее циклические импорты иногда бывают нужны.
Самый, наверное, простой способ: вспоминаем, что import можно делать еще и из функции.
Офлайн
Конечно получите. А вы часто так пишете?
Офлайн
Андрей СветловДа нет, я просто пытаюсь понять как правильно строить структуру.
Конечно получите. А вы часто так пишете?
Офлайн
Лучше - вообще без рекурсии.
Такое легче поддерживать и развивать.
Ну там OOA/OOD, слабо связанне подсистемы и все такое прочее.
Офлайн