Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """
- Декоратор считающий количество вызовов декторируемого метода класса
- """
- class tracer(object):
- def __init__(self, func):
- self.calls = 0
- self.func = func
- def __call__(self, *args, **kwargs):
- self.calls += 1
- print('calls %s to %s' % (self.calls, self.func.__name__))
- return self.func(*args, **kwargs)
- def __get__(self, instance, owner):
- def wrapper(*args, **kwargs):
- return self(instance, *args, **kwargs)
- return wrapper
- """
- Этот же декоратор на основе функции
- """
- def tracer(func):
- calls = 0
- def onCall(*args, **kwargs):
- nonlocal calls
- calls += 1
- print('call %s to %s' % (calls, func.__name__))
- return func(*args, **kwargs)
- return onCall
- class Person:
- def __init__(self, fname, lname, pay):
- self.fname = fname
- self.lname = lname
- self.pay = pay
- @tracer
- def giveRaise(self, percent):
- self.pay += self.pay * percent // 100
- return '%s pay now in %s' % (self.fname, self.pay)
- @tracer
- def fullName(self):
- return self.fname + ' ' + self.lname
- @tracer
- def func(a, b, c):
- return a + b + c
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement