До сих пор мы декорировали только функции. Но декоратор - это просто функция, которая принимает объект и возвращает объект (тот же самый или другой). А класс в Python - тоже объект. Значит, ничто не мешает применить декоратор прямо к классу целиком, а не только к отдельной функции.