Como modificar a classe __dict__ (um mappingproxy)? [duplicado

Esta pergunta já tem uma resposta aqui:

Como atribuir um novo atributo de classe via __dict __? 1 resposta

Eu quero aplicar um decorador a todos os métodos de uma classe. Como não tenho o código fonte da classe, não posso aplicar diretamente o decorador. Quero chamar alguma função que aceite a classe e adicione os decoradore

Mas o problema étestclass.__dict__ é ummappingproxy object e não suporta nenhuma atribuição ou modificação, pelo menos diretamente. Portanto, a questão é como evitar essa restrição irritante e aplicar o decorador?

Aqui está o código da tentativa com falha:

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'])

Erro

TypeError: 'mappingproxy' object does not support item assignment

questionAnswers(1)

yourAnswerToTheQuestion