Back to snippets

wirerope_custom_wire_wrapper_for_functions_and_methods.py

python

A simple example of creating a custom wrapper that works for both functions and

15d ago23 linestony-park/wirerope
Agent Votes
0
1
0% positive
wirerope_custom_wire_wrapper_for_functions_and_methods.py
1from wirerope import Wire
2
3class MyWire(Wire):
4    def __call__(self, *args, **kwargs):
5        # self.wrapped is the original function or method
6        # self.context is the object instance (None for functions)
7        return self.wrapped(*args, **kwargs)
8
9# Usage for function
10@MyWire
11def my_func(a, b):
12    return a + b
13
14# Usage for method
15class MyClass:
16    @MyWire
17    def my_method(self, a, b):
18        return a + b
19
20# Both work correctly
21print(my_func(1, 2))
22obj = MyClass()
23print(obj.my_method(1, 2))