Я читав, що в Python можна додати метод до вже існуючого об'єкта (тобто не у визначенні класу). Я розумію, що це не завжди добре робити. Але як це можна зробити?
Я намагаюся зрозуміти, що таке патч мавп чи патч мавпи? Це щось на зразок методів / операторів, які перевантажують чи делегують? Чи має щось спільне з цими речами?
Скажіть, що я мавпа, що виправляє метод у класі, як я можу викликати метод, що переосмислюється, від методу, що перекриває? Тобто щось на кшталтsuper Напр class Foo def bar() "Hello" end end class Foo def bar() super() + " World" end end >> Foo.new.bar == "Hello World"
Мета - створити макет-клас, який веде себе як набір результатів db. Так, наприклад, якщо запит до бази даних повертається, використовуючи вираз dict,, {'ab':100, 'cd':200}я хотів би побачити: >>> dummy.ab 100 Спочатку я думав, може, я можу це зробити так: ks = ['ab', 'cd'] vs = [12, 34] class C(dict): def …
У мене є функція з декоратором, яку я намагаюся протестувати за допомогою бібліотеки Python Mock . Я хотів би використати, mock.patchщоб замінити справжній декоратор на фіктивний декоратор обходу, який просто викликає функцію. Я не можу зрозуміти, як застосувати патч до того, як справжній декоратор оберне функцію. Я спробував кілька різних …
У мене проблеми із заміною функції з іншого модуля на іншу, і це зводить мене з розуму. Скажімо, у мене є модуль bar.py, який виглядає так: from a_package.baz import do_something_expensive def a_function(): print do_something_expensive() І у мене є ще один модуль, який виглядає так: from bar import a_function a_function() from …
Я працюю з модулем, написаним кимось іншим. Я хотів би, щоб мавпа виправила __init__метод класу, визначеного в модулі. Приклади, які я знайшов, що показують, як це зробити, припускали, що я сам закликаю клас (наприклад, клас Monkey-patch Python ). Однак це не так. У моєму випадку клас італізується в межах функції …
Наприклад, скажімо, що я хочу додати helloWorld()метод до типу дикту Python. Чи можу я це зробити? JavaScript має об'єкт-прототип, який поводиться так. Можливо, це поганий дизайн, і мені слід підкласувати об’єкт dict, але тоді він працює лише для підкласів, і я хочу, щоб він працював на будь-яких майбутніх словниках. Ось …