472 Stimmen

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

450voto

codeape Punkte 93809

Ein Beispiel (Auflistung der Methoden der optparse.OptionParser Klasse):

>>> from optparse import OptionParser
>>> import inspect
#python2
>>> inspect.getmembers(OptionParser, predicate=inspect.ismethod)
[([('__init__', <unbound method OptionParser.__init__>),
...
 ('add_option', <unbound method OptionParser.add_option>),
 ('add_option_group', <unbound method OptionParser.add_option_group>),
 ('add_options', <unbound method OptionParser.add_options>),
 ('check_values', <unbound method OptionParser.check_values>),
 ('destroy', <unbound method OptionParser.destroy>),
 ('disable_interspersed_args',
  <unbound method OptionParser.disable_interspersed_args>),
 ('enable_interspersed_args',
  <unbound method OptionParser.enable_interspersed_args>),
 ('error', <unbound method OptionParser.error>),
 ('exit', <unbound method OptionParser.exit>),
 ('expand_prog_name', <unbound method OptionParser.expand_prog_name>),
 ...
 ]
# python3
>>> inspect.getmembers(OptionParser, predicate=inspect.isfunction)
...

Beachten Sie, dass getmembers gibt eine Liste von 2-Tupeln zurück. Das erste Element ist der Name des Mitglieds, das zweite Element ist der Wert.

Sie können auch eine Instanz an getmembers :

>>> parser = OptionParser()
>>> inspect.getmembers(parser, predicate=inspect.ismethod)
...

294voto

Vincent Demeester Punkte 6667

Es gibt die dir(theobject) Methode, um alle Felder und Methoden Ihres Objekts (als Tupel) aufzulisten, und das inspect-Modul (als codeape write), um die Felder und Methoden mit ihrem Doc (in """) aufzulisten.

Da in Python alles (auch Felder) aufgerufen werden kann, bin ich mir nicht sicher, ob es eine eingebaute Funktion gibt, die nur Methoden auflistet. Sie könnten versuchen, ob die Objekt du kommst durch dir es aufrufbar oder nicht.

222voto

Derorrist Punkte 2484

Python 3.x Antwort ohne externe Bibliotheken

method_list = [func for func in dir(Foo) if callable(getattr(Foo, func))]

dunder-ausgeschlossenes Ergebnis:

method_list = [func for func in dir(Foo) if callable(getattr(Foo, func)) and not func.startswith("__")]

64voto

Naresh Joshi Punkte 737

Angenommen, Sie möchten alle Methoden kennen, die mit der Listenklasse Geben Sie einfach Folgendes ein

 print (dir(list))

Oben finden Sie alle Methoden der Klasse list

39voto

Eugene Bulkin Punkte 1078

Versuchen Sie die Eigenschaft __dict__ .

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