Форум сайта python.su
0
Стандартная проблема новичка наверное уже разжёвывалась несколько раз, но почему то не могу найти вменяемого понятного ответа.
Вот есть код
файл 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
Офлайн
0
по-моему, это архитектурная ошибка, просто незачем так делать
Офлайн
0
pasaranaxМне просто сложно понять почему если я всё держу в одном файле я могу так делать, а если я хочу разнести код по файлам то мне нужен жёсткий рефакторинг.
по-моему, это архитектурная ошибка, просто незачем так делать
Отредактировано (Май 16, 2010 03:18:40)
Офлайн
14
Не хочется разжевывать, почему сильные зависимости - далеко не всегда хорошо. И как эту проблему решают интерфейсы и фабрики…
И тем не менее циклические импорты иногда бывают нужны.
Самый, наверное, простой способ: вспоминаем, что 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
Офлайн
0
Андрей СветловНет ну такой вариант мне понятен, но разве если я допишу в module a в конец
Не хочется разжевывать, почему сильные зависимости - далеко не всегда хорошо. И как эту проблему решают интерфейсы и фабрики…
И тем не менее циклические импорты иногда бывают нужны.
Самый, наверное, простой способ: вспоминаем, что import можно делать еще и из функции.
Офлайн
14
Конечно получите. А вы часто так пишете?
Офлайн
0
Андрей СветловДа нет, я просто пытаюсь понять как правильно строить структуру.
Конечно получите. А вы часто так пишете?
Офлайн
14
Лучше - вообще без рекурсии.
Такое легче поддерживать и развивать.
Ну там OOA/OOD, слабо связанне подсистемы и все такое прочее.
Офлайн