Недавно я читал о технике патчей обезьян и задавался вопросом, можно ли это сказать.Являются ли декораторы на примере python техники патчей обезьян?
1
A
ответ
3
декоратор = функцию, которая принимает функцию в качестве аргумента и возвращает функцию
обезьяны заплаток = заменить значение поля на объект с другим значением (не necessarly функции)
В случае функции патчей обезьян могут выполняться через декоратор. Поэтому я думаю, что декоратор может считаться примером патчей обезьян. Однако обычно исправление обезьян относится к изменению поведения сторонней библиотеки. В этом случае декораторы менее полезны.
2
Я полагаю, что на каком-то грамматическом уровне они могут быть эквивалентными. Тем не менее, декораторы применяются во время определения функции или класса, а monkeypatching изменяет объект во время выполнения, делая их очень разными как по духу, так и в действительном использовании.
В декораторах Python применяются во время выполнения. Функции/классы также «определены» во время выполнения. На самом деле все, даже синтаксические проверки во время исполнения. – freakish
@Bryan Если вы говорите, что исправление обезьяны «изменяет объект», то декораторы также изменяют функции, а функция - это объекты в python. Так это можно сказать правильно? – Kishan
@soupboy: декораторы не изменяют функцию, они принимают функцию в качестве аргумента, а затем возвращают другую функцию. Исходная функция не изменяется. С точки зрения программистов это больше или меньше, чем если бы была изменена оригинальная функция, поэтому я сказал, что их можно считать одинаковыми «на каком-то грамматическом уровне». –