En Python, je dois tester de manière efficace et générique si un attribut d'une classe est une méthode d'instance. Les entrées de l'appel seraient le nom de l'attribut en cours de vérification (une chaîne) et un objet. Hasattr renvoie true, que l'attribut soit une méthode d'instance ou non.Comment tester si un attribut de classe est une méthode d'instance
Des suggestions?
Par exemple:
class Test(object):
testdata = 123
def testmethod(self):
pass
test = Test()
print ismethod(test, 'testdata') # Should return false
print ismethod(test, 'testmethod') # Should return true
Etes-vous sûr de vouloir savoir que c'est une méthode? N'avez-vous pas vraiment envie de savoir si vous pouvez l'appeler? Ce ne sont pas nécessairement la même chose (bien qu'ils le soient souvent). –
Quel est le problème avec la lecture de la source? C'est Python - vous avez la source - pourquoi ne pouvez-vous pas simplement le lire? –
La lecture de la source n'est pas utile - il écrit probablement du code qui doit connaître la réponse à l'exécution. Peut-être itérer à travers tout attr sur un objet, par exemple. –