jungo 13.07.2011 01:27
Есть вопрос! — Методы классов в Python
Здравствуйте.Есть некий набор классов - моделей таблиц (sqlalchemy).
Для примера, возьмем классы User и Post. У них есть методы User.set_posts(), и Post.set_tags(), к примеру. Эти методы абсолютно идентичны в части логики кода, но с тем различием, что внутри метода проверяется является ли переданный параметр строкой, либо объектом класса (Post и Tag, соответственно для User.set_posts() и Post.set_tags()). Таким образом единственное различие - это проверка типа:
1 |
|
В общем, не могу понять, как бы покрасивее отрефакторить этот код так, что бы нужный код был реализован только 1 раз, а не в каждом отдельном классе с незначительным изменением.
По идее, можно реализовать отдельную функцию в модуле, которая принимает дополнительный параметр типа, и в каждом классе определить нужные функции как:
1 |
|
Но по-моему, это выглядит ужасно и вообще костыль. Хочется более правильного, more pythonic, решения.
Спасибо.
Спасибо за ответ, я думал об этом варианте, и, скорее всего, так и решу проблему.
т.е. примерно так будет: