Si une variable fait référence à une méthode ou à une méthode de classe, comment puis-je savoir de quel type il s'agit et obtenir le type de classe s'il s'agit d'une méthode de classe, notamment lorsque la classe est déclarée comme dans l'exemple donné.Comment faire la distinction entre une fonction et une méthode de classe?
par ex.
def get_info(function_or_method):
print function_or_method
class Foo(object):
def __init__(self):
pass
get_info(__init__)
def bar():
pass
get_info(bar)
Mise à jour à la question après les deux premières réponses de David et JF Sebastian Pour souligner encore une fois un point JF Sebastian a fait allusion, je veux être en mesure de distinguer lorsque la fonction est déclarée dans la classe (lorsque le type que j'obtiens est une fonction et non une méthode liée ou non liée). c'est à dire. où le premier appel à get_info(__init__)
se produit, j'aimerais pouvoir détecter que c'est une méthode déclarée comme faisant partie d'une classe. Cette question a été soulevée depuis que je mets un décorateur autour de la fonction init et je n'arrive pas à savoir si une méthode est déclarée dans une classe ou une fonction autonome
Il n'y a aucune raison qu'un décorateur travaille pour les fonctions non liées et les fonctions de méthode. Pourquoi essayez-vous de faire cela? Pourquoi ne pas avoir deux décorateurs? –