37 lines
782 B
Python
37 lines
782 B
Python
from rainbowadn.instrument import *
|
|
|
|
|
|
class Print(Instrumentation):
|
|
def __init__(self, target, methodname: str, msg: str):
|
|
super().__init__(target, methodname)
|
|
self.msg = msg
|
|
|
|
def instrument(self, method, *args, **kwargs):
|
|
print(self.msg, end=" ")
|
|
return method(*args, **kwargs)
|
|
|
|
|
|
class C:
|
|
@classmethod
|
|
def m(cls):
|
|
print("m")
|
|
|
|
|
|
with Print(Instrumentation, "__exit__", "exit"):
|
|
print1 = Print(C, "m", "1")
|
|
print2 = Print(C, "m", "2")
|
|
print3 = Print(C, "m", "3")
|
|
C.m()
|
|
print1.__enter__()
|
|
C.m()
|
|
print2.__enter__()
|
|
C.m()
|
|
print3.__enter__()
|
|
C.m()
|
|
print1.__exit__(None, None, None)
|
|
C.m()
|
|
print2.__exit__(None, None, None)
|
|
C.m()
|
|
print3.__exit__(None, None, None)
|
|
C.m()
|