Possible de changer le nom de la fonction de définition?

J'ai essayé plusieurs façons de changer le nom de la fonction dans la définition, mais ils ont échoué.

>>> def f():
        pass
>>> f.__name__
'f'
>>> def f():
        f.__name__ = 'new name'
>>> f.__name__
'f'
>>> def f():
        self.__name__ = 'new name'
>>> f.__name__
'f'

Mais je peux changer le nom de l'attribut après le définir.

>>> def f():
        pass
>>> f.__name__ = 'new name'
>>> f.__name__
'new name'

Une manière de changer/mettre dans la définition (autres qu'à l'aide d'un décorateur)?

La raison self.__method__() de ne pas travailler est parce que self est un argument transmis à l'argument de l'interprète. Il n'existe pas de mécanisme de passage d'une instance à votre fonction. (Soit dit en passant, le nom de la variable ne doit pas être self, il peut être foo, ou bar ou quoi que ce soit)
Êtes-vous l'écriture de ce code pour la sécurité de l'emploi? 🙂

OriginalL'auteur beardc | 2012-06-03