Я создал декоратор для декорирования всех методов экземпляра класса.Я написал следующий код, чтобы сделать это.
def debug(func):
msg = func.__name__
@wraps(func)
def wrapper(*args, **kwargs):
print(msg)
return func(*args, **kwargs)
return wrapper
# Decorator for all the methods in a class
def debugmethods(cls):
for key, val in vars(cls).items():
if callable(val):
setattr(cls, key, debug(val))
return cls
@debugmethods
class Spam:
def foo(self):
pass
def bar(self):
pass
Теперь я пытаюсь понять, как это работает, я имею в виду, когда это украшение произойдет и как я могу это проверить?
a)Это уже случилось?
б) Когда я впервые получаю доступ к классу спама?Например,
for key, val in Spam.__dict__.items():
print(key, val)
в) Когда я впервые создаю экземпляр класса Spam?Например,
spam = Spam()
for key, val in Spam.__dict__.items():
print(key, val)