Wie um zu testen, ob ein class-Attribut ist eine Instanz-Methode
In Python, die ich brauche, um effizient und allgemein testen, ob ein Attribut einer Klasse ist eine Instanz-Methode. Die Eingaben für den Anruf wäre der name des Attributs, das geprüft wird (ein string) und ein Objekt.
hasattr gibt true zurück, unabhängig davon, ob das Attribut auf eine Instanz-Methode oder nicht.
Irgendwelche Vorschläge?
Beispiel:
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
- Sind Sie sicher, dass Sie es wissen müssen, es ist eine Methode? Sie sind nicht wirklich Jucken zu wissen, wenn man das so nennen kann? Diese sind nicht notwendigerweise die gleiche Sache (obwohl natürlich sind Sie oft).
- Was ist Los mit dem Lesen der Quelle? Dies ist die Python-Sie haben die Quelle -- warum kann man nicht einfach Lesen?
- Das Lesen der Quelle ist nicht zu helfen - vermutlich hat er einige code schreiben, der muss wissen, die Antwort zur Laufzeit. Möglicherweise Durchlaufen alle attrs auf ein Objekt, zum Beispiel.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die
inspect
Modul:False
für dein Beispiel HauptstadtA
und gilt für Ihr Beispiel Kleinbuchstaben 'a', Das ist, die Frage war, aus einem Objekt-Attribut, wie können wir sagen, ob es aufrufbar ist, UND dass es Attribut der Instanz, nicht, ein class-Attribut (static-member-Funktion).Diese Funktion prüft, ob das Attribut vorhanden ist und dann prüft, ob das Attribut eine Methode mit der
inspect
Modul.