472 Stimmen

Wie erhalte ich eine Liste von Methoden in einer Python-Klasse?

33voto

Seaux Punkte 3339

Können Sie auch den FunctionType von types importieren und ihn mit der class.__dict__ :

from types import FunctionType

class Foo:
    def bar(self): pass
    def baz(self): pass

def methods(cls):
    return [x for x, y in cls.__dict__.items() if type(y) == FunctionType]

methods(Foo)  # ['bar', 'baz']

29voto

Ekene Oguikpu Punkte 489

Sie können alle Methoden in einer Python-Klasse mit folgendem Code auflisten

dir(className)

Dies gibt eine Liste aller Namen der Methoden der Klasse zurück

15voto

satyagraha Punkte 623

Beachten Sie, dass Sie überlegen müssen, ob Sie Methoden von Basisklassen, die geerbt (aber nicht überschrieben) werden, in das Ergebnis aufnehmen wollen. Die dir() et inspect.getmembers() Operationen umfassen zwar Methoden der Basisklasse, aber die Verwendung der __dict__ Attribut nicht.

10voto

Parkofadown Punkte 598

Versuchen Sie print(help(ClassName)) Sie gibt die Methoden der Klasse aus

10voto

markroxor Punkte 5068

Wenn Ihre Methode eine "normale" Methode ist und nicht eine staticmethod , classmethod usw.
Es gibt einen kleinen Hack, den ich mir ausgedacht habe -

for k, v in your_class.__dict__.items():
    if "function" in str(v):
        print(k)

Dies kann auf andere Arten von Methoden ausgeweitet werden, indem man "function" in der if Zustand entsprechend.
Getestet in Python 2.7 und Python 3.5.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X