Форум сайта python.su
19
А да забыл, поправить тесты чтобы работали корректно с новым кодом.
Отредактировано PanovSergey (Фев. 4, 2014 19:47:50)
Офлайн
43
PanovSergeyЕще раз, общий код находится в методах. Определять методы одного класса в разных модулях - как минимум странно.
Вынести значит собрать общий код вместе
PanovSergeyЕсли код не полный, то не факт, что его не должно быть там.
выпилить оттуда где его не должно быть
Офлайн
19
Попробую объяснить 
В этом коде явно напрашивается дополнительный класс отвечающий за функциональность коллекции, т.е методы: добавить в коллекцию коллекционера, удалить автомобиль, проверить есть ли автомобиль у кого то бы то ни было, нет ли дублирующих записей. И т.д. Очевидно что нужен еще один класс. отвечающий за все это. Тогда классы коллекционер и авто смогут сосредоточиться на специфичных для них свойствах, например, ну скажем членская карточка коллекционера или размер шин для авто. Что это дает, во первых классы будут меньше позволит их лучше понимать. Дальше Большую гибкость например т.к коллекционер не будет имеет прямой связи с Авто. Соответственно его можно использовать совершенно отдельно. Без Авто и связей с ними. Как то так.
Если код не полный, то не факт, что его не должно быть там.Где написано что код не полный?
Написано “Прошу простить, если “это” больно читать.” о чем топикстартер честно предупредил. Я же писал кривой и не рабочий. А по сути видно ошибка проектирования отсюда и циклический импорт.
Офлайн
43
PanovSergeyЯ этого не утверждал. Если он полный, то ТС, наверное, просто поместил бы эти ~50 строк в один модуль.
Где написано что код не полный?
PanovSergeyСобственно, то, что я пытался донести - взаимные импорты не являются ошибкой проектирования в общем случае.
А по сути видно ошибка проектирования отсюда и циклический импорт.
Отредактировано sergeek (Фев. 5, 2014 07:29:59)
Офлайн
0
версия 2.7.1. Я так понял, в питоне нет места соотношению один класс - один файл? А код, между прочим, хоть и кривой, но рабочий. Сделал одним файлом - стало тру!
UDP:На самом деле, код я действительно не дописал! И надо было это указать!
Отредактировано Tropick (Фев. 5, 2014 09:48:40)
Офлайн
75
Tropick
зачем себя утруждать ведь так приятно побыть немного в роли Шерлока
Офлайн
19
Собственно, то, что я пытался донести - взаимные импорты не являются ошибкой проектирования в общем случае.Так скажем есть паттерны, а есть антипаттерны которые работают в разных случаях
У циклических импортов есть существенный минус, когда вам понадобится этот модуль + еще какой нибудь, не известно когда вы огребете еще один цикл, и тогда единственным выходом будет делать локальный импорт ибо разруливать связи будет поздно
А когда на каждый чих в коде надо делать импорт начинается жесть
Сделал одним файлом - стало тру!Как вариант. Но лучше было сделать модулями. Меньше связность.
Офлайн