Obter a classe de definição do objeto de método não acoplado no Python 3

Digamos que eu queira criar um decorador para os métodos definidos em uma classe. Desejo que esse decorador, quando chamado, possa definir um atributo na classe que define o método (para registrá-lo em uma lista de métodos que atendem a um propósito específico).

No Python 2, oim_class O método realiza isso muito bem:

def decorator(method):
  cls = method.im_class
  cls.foo = 'bar'
  return method

No entanto, no Python 3, esse atributo (ou um substituto para ele) parece existir. Suponho que a ideia era que você poderia ligartype(method.__self__) para obter a classe, mas isso não funciona para métodos não acoplados, pois__self__ == None nesse caso.

NOTA: Essa pergunta é realmente um pouco irrelevante para o meu caso, já que decidi definir um atributo no próprio método e fazer com que a instância varra todos os métodos que procuram esse atributo no momento apropriado. Também estou (atualmente) usando o Python 2.6. No entanto, estou curioso para saber se há algum substituto para a funcionalidade da versão 2 e, se não, qual foi o motivo para removê-lo completamente.

EDITAR: Acabei de encontraressa questão. Isso faz parecer que a melhor solução é apenas evitá-la como eu. Ainda estou me perguntando por que foi removido.

questionAnswers(4)

yourAnswerToTheQuestion