Heim >Backend-Entwicklung >Python-Tutorial >Wie erhalte ich eine Liste von Methoden innerhalb einer Python-Klasse?

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

Susan Sarandon
Susan SarandonOriginal
2024-10-29 20:40:02290Durchsuche

How to Obtain a List of Methods within a Python Class?

Eine Liste von Methoden in einer Python-Klasse abrufen

Das Durchlaufen der Methoden einer Klasse oder das unterschiedliche Behandeln ihrer Objekte basierend auf ihren Methoden erfordert das Abrufen einer Liste dieser Methoden. Dieser Artikel bietet zwei Ansätze, um dies zu erreichen.

Verwendung von inspect.getmembers()

Diese Funktion verwendet eine Klasse oder Instanz als erstes Argument und eine Prädikatfunktion als ihr Argument zweites Argument. Die Prädikatfunktion filtert die zurückgegebene Liste basierend auf einem bestimmten Kriterium. Um eine Liste von Methoden in einer Klasse abzurufen, können wir inspect.ismethod als Prädikatfunktion übergeben.

<code class="python">from inspect import getmembers, ismethod

class MyClass:
    def method1(self):
        pass

    def method2(self):
        pass    

# Python 2.x
methods = getmembers(MyClass, ismethod)

# Python 3.x
methods = getmembers(MyClass, isfunction)</code>

Die Methodenvariable enthält eine Liste von Tupeln, wobei jedes Tupel den Methodennamen und das Methodenobjekt enthält .

Verwendung von dir()

Die Funktion dir() gibt eine Liste aller Attribute eines Objekts zurück, einschließlich Methoden. Es enthält jedoch auch Nicht-Methoden-Attribute, die möglicherweise eine zusätzliche Filterung erfordern.

<code class="python">methods = [m for m in dir(MyClass) if callable(getattr(MyClass, m))]</code>

Der callable()-Filter prüft, ob ein Attribut aufrufbar ist und eine Methode angibt. Beachten Sie, dass dieser Ansatz möglicherweise nicht so zuverlässig ist wie die Verwendung von inspect.getmembers(), da er möglicherweise Nicht-Methodenattribute enthält.

Das obige ist der detaillierte Inhalt vonWie erhalte ich eine Liste von Methoden innerhalb einer Python-Klasse?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn