Форум сайта python.su
0
Сижу туплю над простейшей вещью. Есть два класса, один наследуется от другого (REST-хэндлеры с методами GET, POST, PUT и т.д.). И в наследнике, и в родителе внутри метода вызывается проверка. Проблема в том, что если в наследнике сделать проверку, а потом позвать super() на тот же обработчик родителя - выйдет фигня, потому что тот запустит свою проверку, которая уже не пройдет.
Вот пример кода:
# -*- coding: utf-8 -*- class ProviderHandler(JSONHandler): @classmethod def check(cls, cluster): if cluster.provider != cls.provider: raise Exception() class FirstHandler(ProviderHandler): provider = "first" def PUT(self, cluster_id): cluster = self.get_object_or_404(Cluster, cluster_id) self.check(cluster) # this is the check # lots of code here - copy-paste is not suitable solution class SecondHandler(FirstHandler): provider = "second" def PUT(self, cluster_id): cluster = self.get_object_or_404(Cluster, cluster_id) self.check(cluster) # this is the check 2 super( SecondHandler, self ).PUT(cluster_id)
Отредактировано Enchantner (Окт. 31, 2013 13:57:06)
Офлайн
32
EnchantnerЗавернуть в def do_something(…
# lots of code here - copy-paste is not suitable solution
Офлайн
0
o7412369815963
Тут это огрызок из кода, там еще много чего. Действительно, classmethod тут не нужен.
Спасибо за ответ, просто затупил вдруг, хотел уже в гугле искать, как внутри метода отличить, вызван он просто или через super().
Отредактировано Enchantner (Окт. 31, 2013 14:17:05)
Офлайн