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
Libérer: 2024-11-17 21:23:02
original
496 Les gens l'ont consulté

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()
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal