A Word of CautionΒΆ

The process of Monkey Patching is at the same time both incredibly powerful and dangerous. It makes it easy to improve things on the surface but makes it even easier to cause troubles if done inappropriately.

Mostly, inserting new attributes by prefixing their name to avoid (future?) name clashes is usually fine, but replacing existing attributes should be avoided like the plague unless you really have to and know what you are doing. That is, if you do not want ending up being fired because you broke everyone else’s code.

As a safety measure, Gorilla has its Settings.allow_hit attribute set to False by default, which raises an exception whenever it detects an attempt at overwriting an existing attribute.

If you still want to go ahead with allowing hits, a second measure enabled by default through the Settings.store_hit attribute is to store the overwriten attribute under a different name to have it still accessible using the function get_original_attribute().

But still, avoid it if you can.

You’ve been warned.