Как изменить класс __dict__ (маппинг-прокси)? [Дубликат]

На этот вопрос уже есть ответ:

Как назначить новый атрибут класса через __dict __? 1 ответ

Я хочу применить декоратор к каждому методу в классе. У меня нет исходного кода класса, поэтому я не могу напрямую применить декоратор. Я хочу вызвать некоторую функцию, которая принимает класс и добавляет декораторы.

Но проблема в том,testclass.__dict__ этоmappingproxy объект, и он не поддерживает какое-либо назначение или изменение, по крайней мере, напрямую. Так что вопрос в том, как избежать этого раздражающего ограничения и применить декоратор?

Вот код неудачной попытки:

class qwer:
    def test(self):
        print('test')

def decor(func):
    def w(*args, **named_args):
        print('decor')
        func(*args, **named_args)
    return w

qwer.__dict__['test'] = decor(qwer.__dict__['test'])

Ошибка

TypeError: 'mappingproxy' object does not support item assignment

Ответы на вопрос(1)

Ваш ответ на вопрос