Как да приложим декоратор на клас в python
Въпрос за експерти по python.
Оригиналната задача - необходимо е един от методите на класа да е обвит в декоратори. Това може да се направи, като се замени този метод и се увие чрез method_decorator.
Не искам всеки път да пренаписвам този метод. Струва ми се по-логично това решение
Ето въпроса - как да пиша viewdecorator?
Сега написах следното:
В същото време по някаква причина classmethod и classonlymethod не се прехвърлят. По-конкретно, в моя случай as_view () не върви.
Как да го накарам да се пренесе?
Е, не мога да не предложа собствена опция за изпълнение =)
@vvpoloskin Е, тази опция поне създава обект на клас 1 път за vyuhi. Във вашия случай функцията newgetattr е изпълнена почти 3 пъти. от jungi, имаше извикване на различни методи чрез getattribute преди извикването на изпращането.
Копирането на метаинформацията в класната стая е доста лесно. Но тук е само случаят, когато гъвкавостта се припокрива с красотата и трябва да изберете или гъвкавост, или красота. Бих избрал второто. =)
@abukin вашият код е по-описателен и красив, но.
В крайна сметка каква е разликата, ако новият ми метод е извикан три пъти или методът на новия ви клас)
За сметка на разбирането на кода от други програмисти - ще им бъде смешно да видят хвърлено изключение в нов клас, което те самите не са написали)
Друга бележка относно метаинформацията - да, отменяте такива малки неща като __doc__, __name__. Но за сходство все пак трябва да смените mro и бази (или може би __subclasshook__ също?)