Форум сайта python.su
В коде есть такие фрагменты, в нескольких моделях:
def _update_sub_category_products(self): catalog = Catalog.objects.get(c_id = self.c_id) subs = get_cats_by_parent(catalog,[]) products = Products.objects.exclude(p_deleted = True).filter(p_catalog_id__in = subs, p_active = True, p_price__gt = 0) return products def category_sub_products(self): products = self._update_sub_category_products() return products
Офлайн
ElapheПервая функция у вас имеет подчеркивание вначале. В практическом питоне это сигнал разработчику не использовать эту функцию и не изменять её в потомках - это служебная функция и только её разработчик знает все нюансы её использования. Для вас сделана обертка для этой функции, которую вы используете. Таким образом, в следующей версии продукта разработчик вполне может существенно изменить функцию _update_sub_category_products, вас это вообще никак не должно касаться, ваша функция category_sub_products не измениться, вы можете её переопределить в потомках, вызывать где и когда угодно и вообще не заморачиваться. Можно считать, что у вас есть протектед и паблик версии метода.
Почему было не оставить одну функцию?
def _update_sub_category_products(self, count, is_moderator): catalog = Catalog.objects.get(c_id = self.c_id) subs = get_cats_by_parent(catalog,[]) products = Products.objects.exclude(p_deleted = True).filter(p_catalog_id__in = subs, p_active = True, p_price__gt = 0)[:count] return products def category_sub_products(self): products = self._update_sub_category_products(DEFAULT_COUNT, False) return products
Офлайн