Python: декораторы классов, магические методы
Всем Привет,
Я смотрел на декораторов класса. В основном я реализовал класс, оформленный, сделав его вызываемым.
Я добавил некоторую инструкцию print в метод __call__. Я заметил, что оператор print выполняется дважды.
Я сомневался, что магические методы вызываются в тот момент, когда вы создаете экземпляр класса? Или мы ждем явного действия, которое вызовет эти методы.
Последнее верно, но я путаюсь с автоматическим вызовом магических методов
Что я уже пробовал:
>>> class decorator: def __init__(self,f): self.f=f def __call__(self): print ('decorated') self.f() >>> @decorator def func(): print('Hi') >>> func() decorated Hi >>> d = decorator(func) >>> d() decorated decorated Hi
Как видите, строка "украшен" повторяется дважды. Однако, согласно моему пониманию, выходные данные должны иметь только "украшенную" строку один раз и одну строку из украшенной функции.
Я бы запросил предложения/вклады.
Спасибо и с уважением,
Рахул