652 Stimmen

Herausfinden, welche Methoden ein Python-Objekt hat

Gibt es bei einem beliebigen Python-Objekt eine einfache Möglichkeit, die Liste aller Methoden zu erhalten, die dieses Objekt hat?

Oder,

wenn dies nicht möglich ist, gibt es zumindest eine einfache Möglichkeit zu überprüfen, ob es eine bestimmte Methode hat, außer einfach zu überprüfen, ob ein Fehler auftritt, wenn die Methode aufgerufen wird?

0 Stimmen

27voto

jmanning2k Punkte 8949

Abgesehen von den direkten Antworten wäre ich nachlässig, wenn ich nicht erwähnen würde IPython .

Hit Tab um die verfügbaren Methoden mit automatischer Vervollständigung anzuzeigen.

Und wenn Sie eine Methode gefunden haben, versuchen Sie es:

help(object.method)

um die Pydocs, die Signatur der Methode usw. zu sehen.

Ahh... REPL .

26voto

Paritosh Vyas Punkte 219

Der einfachste Weg, eine Liste der Methoden eines beliebigen Objekts zu erhalten, ist die Verwendung der help() Befehl.

help(object)

Es werden alle verfügbaren/wichtigen Methoden aufgelistet, die mit diesem Objekt verbunden sind.

Zum Beispiel:

help(str)

21voto

Sergey Bushmanov Punkte 18867

Angenommen, wir haben eine Python obj . Dann sehen Sie alle Methoden, die es gibt, einschließlich derer, die von __ ( magische Methoden ):

print(dir(obj))

Um magische Builtins auszuschließen, würde man das tun:

[m for m in dir(obj) if not m.startswith('__')]

20voto

paulmelnikow Punkte 16441

Wenn Sie ausdrücklich wünschen Methoden sollten Sie inspect.ismethod .

Für Methodennamen:

import inspect
method_names = [attr for attr in dir(self) if inspect.ismethod(getattr(self, attr))]

Für die Methoden selbst:

import inspect
methods = [member for member in [getattr(self, attr) for attr in dir(self)] if inspect.ismethod(member)]

Manchmal inspect.isroutine kann ebenfalls nützlich sein (für Built-Ins, C-Erweiterungen, Cython ohne die Compilerdirektive "binding").

14voto

Valery Ramusik Punkte 1333

Öffnen Sie eine Bash-Shell ( Ctrl + Alt + T auf Ubuntu). Starten Sie darin eine Python 3-Shell. Erstellen Sie ein Objekt, dessen Methoden Sie beobachten wollen. Fügen Sie einfach einen Punkt dahinter ein und drücken Sie Tab zweimal und Sie sehen dann etwas wie das hier:

user@note:~$ python3
Python 3.4.3 (default, Nov 17 2016, 01:08:31)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import readline
>>> readline.parse_and_bind("tab: complete")
>>> s = "Any object. Now it's a string"
>>> s. # here tab should be pressed twice
s.__add__(           s.__rmod__(          s.istitle(
s.__class__(         s.__rmul__(          s.isupper(
s.__contains__(      s.__setattr__(       s.join(
s.__delattr__(       s.__sizeof__(        s.ljust(
s.__dir__(           s.__str__(           s.lower(
s.__doc__            s.__subclasshook__(  s.lstrip(
s.__eq__(            s.capitalize(        s.maketrans(
s.__format__(        s.casefold(          s.partition(
s.__ge__(            s.center(            s.replace(
s.__getattribute__(  s.count(             s.rfind(
s.__getitem__(       s.encode(            s.rindex(
s.__getnewargs__(    s.endswith(          s.rjust(
s.__gt__(            s.expandtabs(        s.rpartition(
s.__hash__(          s.find(              s.rsplit(
s.__init__(          s.format(            s.rstrip(
s.__iter__(          s.format_map(        s.split(
s.__le__(            s.index(             s.splitlines(
s.__len__(           s.isalnum(           s.startswith(
s.__lt__(            s.isalpha(           s.strip(
s.__mod__(           s.isdecimal(         s.swapcase(
s.__mul__(           s.isdigit(           s.title(
s.__ne__(            s.isidentifier(      s.translate(
s.__new__(           s.islower(           s.upper(
s.__reduce__(        s.isnumeric(         s.zfill(
s.__reduce_ex__(     s.isprintable(
s.__repr__(          s.isspace(

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