Maison  >  Article  >  développement back-end  >  Comment puis-je récupérer le nom de la méthode de l'appelant en Python sans modifier la méthode de l'appelant ?

Comment puis-je récupérer le nom de la méthode de l'appelant en Python sans modifier la méthode de l'appelant ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-17 21:23:02496parcourir

How can I retrieve the caller's method name in Python without modifying the caller method?

Récupération du nom de la méthode de l'appelant en Python

Lorsque vous travaillez avec des appels de fonction à plusieurs niveaux, il peut être utile d'accéder au nom de l'appelant. méthode d'appel. Cela peut fournir un contexte précieux dans les méthodes appelées. Cet article explique comment récupérer le nom de la méthode de l'appelant en Python, en évitant toute modification de la méthode de l'appelant.

Utilisation d'Inspect

Le module d'inspection Python fournit plusieurs fonctions pour accéder informations sur les appelants. inspect.getframeinfo() et les fonctions associées nous permettent de naviguer dans la pile de cadres et de récupérer les informations pertinentes.

Implémentation

Vous trouverez ci-dessous une démonstration de la façon d'utiliser inspect :

import inspect

def f1():
    f2()

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

f1()

Dans cet exemple, le nom de l'appelant est récupéré dans la fonction f2 à l'aide de la variable calframe. La valeur de calframe1 contient le nom de l'appelant (f1 dans ce cas).

Attention

Il est important de noter que l'introspection, bien qu'utile pour le débogage et le développement, ne doit pas être invoqué à des fins liées à la production. Ses résultats peuvent être affectés par divers facteurs et doivent être abordés avec prudence dans des scénarios critiques.

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