3 votes

Python: comment obtenir la classe d'une méthode appelante par inspection?

Pour ma classe d'exception, j'aimerais savoir si la fonction qui a instancié l'objet d'exception est une méthode et, le cas échéant, afficher le nom de la classe.

Donc, dans la méthode init de ma classe d'exception, j'obtiens le nom de la fonction d'appel :

frame, module, line, function, context, index = inspect.stack()[1]

Mais y a-t-il un moyen d'obtenir le nom de la classe (si elle existe) de la fonction d'appel ?

2voto

Ian B. Points 243

En supposant que le cadre est pour une méthode d'instance :

self_argument = frame.f_code.co_varnames[0]  # Cela *devrait* être 'self'.
instance = frame.f_locals[self_argument]
class_name = instance.__class__.__name__

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X