Python dir()-Funktion

Python3 内置函数Python3 integrierte Funktionen


dir()Es ist eine integrierte Funktion in Python, mit der eine Liste von Attributen und Methoden eines Objekts abgerufen wird.

dir()Gibt eine Liste zurück, die die Namen aller Attribute und Methoden des Objekts enthält. Diese Funktion ist sehr nützlich, um unbekannte Objekte zu erkunden, Code zu debuggen und Klassenstrukturen zu verstehen.

Wortdefinition: dirJadirectoryAbkürzung von (directory), hier bezogen auf die Liste der Attribute und Methoden.


Grundlegende Syntax und Parameter

Syntaxformat

dir(object)
dir()

Parameterbeschreibung

  • Parameter object(Optional):
    • Typ: Beliebiges Objekt
    • Beschreibung: Das Objekt, dessen Attributliste abgerufen werden soll. Wenn kein Parameter übergeben wird, wird die Liste der Namen im aktuellen Gültigkeitsbereich zurückgegeben.

Funktionsbeschreibung

  • Rückgabewert: Gibt eine Liste von Zeichenketten zurück, die die Namen von Attributen und Methoden enthält.
  • Eigenschaften: Die Liste ist alphabetisch sortiert.

Beispiele

Beispiel 1: Objektattribute anzeigen

Beispiel

# Alle Attribute und Methoden einer Liste anzeigen
print(dir([]))
# Ausgabe: ['__add__', '__class__', '__contains__', ... 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

# Attribute eines Strings anzeigen
print(dir(""))
# Ausgabe: ['__add__', '__class__', '__contains__', ... 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

# Attribute eines Wörterbuchs anzeigen
print(dir({}))
# Ausgabe: ['__class__', '__contains__', ... 'clear', 'copy', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

Erwartete Ausgabe:

Gibt eine Liste aller Attribut- und Methodennamen des Objekts zurück.

Code-Erklärung:

  1. Beginnend mit doppeltem Unterstrich__sind spezielle Attribute/Methoden (magische Methoden).
  2. Diejenigen ohne doppelte Unterstriche sind öffentliche Methoden, wie z. B.append, sortusw.

Beispiel 2: Benutzerdefinierte Klassenattribute anzeigen

Beispiel

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def greet(self):
        return f"Hello, I'm {self.name}"

# Instanz erstellen
p = Person("Tom", 20)

# Instanzattribute anzeigen
print(dir(p))
# Ausgabe: ['__class__', '__delattr__', '__dict__', '__init__', ... 'age', 'greet', 'name']

# Filtern, um nur nicht spezielle Methoden anzuzeigen
attrs = [attr for attr in dir(p) if not attr.startswith('_')]
print(attrs)  # Ausgabe: ['age', 'greet', 'name']

Erwartete Ausgabe:

['__class__', '__delattr__', '__dict__', '__init__', ... 'age', 'greet', 'name']
['age', 'greet', 'name']

Code-Erklärung:

  • __dict__Enthält die Instanzattribute des Objekts.
  • Filter__Methoden, die mit (doppelten Unterstrichen) beginnen, herausfiltern, um öffentliche Attribute zu erhalten.

Beispiel 3: Verwendung ohne Parameter

Beispiel

# Ohne Parameter gibt sie die Liste der Namen im aktuellen Gültigkeitsbereich zurück
print(dir())
# Ausgabe: ['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']

# Ansicht nach dem Importieren des Moduls
import os
print(dir())
# Wird 'os' in die Liste aufnehmen

# Modulattribute anzeigen
import json
print(dir(json))
# Ausgabe: ['JSONDecodeError', '__all__', '__author__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'decoder', 'dump', 'dumps', 'encoder', 'load', 'loads', 'tool']

Erwartete Ausgabe:

Gibt die Liste der Namen zurück, die im aktuellen Gültigkeitsbereich verfügbar sind.

dir()Es ist ein leistungsstarkes Werkzeug zum Erkunden von Python-Objekten und -Modulen, besonders geeignet für interaktives Lernen und Debuggen.


Python3 内置函数Python3 integrierte Funktionen


Andere Erweiterungen