Функция декоратора test()
выполняется в контексте класса Classical
во время создания этого класса.Выполняя код в теле класса, класс еще не существует, поэтому нет доступа к нему.Чтобы обойти это, вы должны использовать декоратор класса вместо декоратора функции.
В качестве альтернативы, вы можете сказать нам, чего вы на самом деле пытаетесь достичь.Скорее всего, будет простое решение.
Редактировать : Чтобы ответить на отредактированный вопрос: Чтобы получить доступ к классу, к которому принадлежит несвязанный метод, вы можете использовать unbound_method.im_class
в CPython 2.Икс.Я не знаю, переносимо ли это на другие реализации Python, и, скорее всего, есть лучший способ достичь того, чего вы пытаетесь достичь.