Source code for bag.monkeypatch

"""A decorator to add a method to an existing class."""

[docs]def monkeypatch(cls: type, name: str=None): """Decorator. Applied to a function, sets it as a method in a class. This can be used above a property, too. Example:: @monkeypatch(MyClass) def some_method(self): pass """ def _monkeypatch(fn): nam = name or ( fn.fget.__name__ if isinstance(fn, property) else fn.__name__) setattr(cls, nam, fn) return _monkeypatch