Maison >développement back-end >Tutoriel Python >Comment déterminer le nom de la méthode de l'appelant en Python ?

Comment déterminer le nom de la méthode de l'appelant en Python ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-10 10:40:031057parcourir

How to Determine the Caller's Method Name in Python?

Comment déterminer le nom de la méthode de l'appelant dans une méthode appelée

En Python, comprendre la relation appelant-appelé est crucial pour le débogage et le code analyse. Un problème courant rencontré par les développeurs est l'identification du nom de la méthode de l'appelant dans la méthode appelée. Ces informations sont souvent utiles pour le débogage et peuvent aider à identifier la source d'un problème.

Pour résoudre ce problème, Python fournit le module inspect qui offre plusieurs fonctions pour accéder aux informations sur le cadre de pile actuel, y compris les détails de l'appelant. . La fonction inspect.getframeinfo() joue un rôle essentiel dans l'obtention de ces informations.

Considérez l'exemple suivant :

def method1(self):
    ...
    a = A.method2()

def method2(self):
    ...

Dans ce scénario, si vous souhaitez déterminer le nom de la méthode de l'appelant sans en modifiant method1(), vous pouvez utiliser inspect.getframeinfo() dans method2() comme suit :

import inspect

def f1(): f2()

def f2():
    curframe = inspect.currentframe()
    calframe = inspect.getouterframes(curframe, 2)
    print('caller name:', calframe[1][3])

f1()

La sortie de ce code sera be :

caller name: f1

Cette approche exploite les techniques d'introspection pour accéder aux informations sur le nom de la méthode de l'appelant. Cependant, il est important de noter que cette introspection est principalement destinée à des fins de débogage et de développement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn