Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Logger(object):
- def _logger(self, func):
- if not hasattr(self, 'history'):
- self.history = []
- def wrapper(*args, **kwargs):
- self.history.append((func.__name__, args, kwargs))
- return func(*args, **kwargs)
- return wrapper
- def __getattribute__(self, name):
- print(name)
- item = object.__getattribute__(self, name)
- if callable(item):
- logger = object.__getattribute__(self, '_logger')
- return logger(item)
- return item
- def __str__(self):
- return str(self.history)
- def goo(self):
- pass
- if __name__ == '__main__':
- pass
- class A(Logger):
- def foo(self):
- pass
- logger = Logger()
- logger.goo()
- logger.goo()
- logger.goo()
- print(logger)
- print()
- print('-------')
- a = A()
- a.foo()
- print(a)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement