Python getattr()-Funktion

Python3 内置函数Python3 integrierte Funktionen


getattr()Es ist eine in Python integrierte Funktion, mit der Attributwerte von Objekten abgerufen werden.

getattr()Es ermöglicht uns, dynamisch auf Objektattribute zuzugreifen, anstatt die Punktnotation (.) für statischen Zugriff zu verwenden. Dies ist sehr nützlich, wenn unbekannte Attribute behandelt werden.

Wortdefinitionen: getattr 是 get attribute(获取属性)的缩写。


Grundlegende Syntax und Parameter

Syntaxformat

getattr(object, name)
getattr(object, name, default)

Parameterbeschreibung

  • Parameter object:
    • Typ: Beliebiges Objekt
    • Beschreibung: Das Objekt, dessen Attribut abgerufen werden soll.
  • Parametername:
    • Typ: String
    • Beschreibung: Attributname.
  • Parameter default(optional):
    • Typ: Beliebiger Wert
    • Beschreibung: Der Standardwert, der zurückgegeben wird, wenn das Attribut nicht existiert.

Funktionsbeschreibung

  • Rückgabewert: Gibt den Wert des Attributs zurück.
  • Ausnahmen: Wenn das Attribut nicht existiert und kein Standardwert angegeben ist, wird ein AttributeError ausgelöst.

Beispiele

Beispiel 1: Grundlegende Verwendung

Beispiel

class Person:
    def __init__(self):
        self.name = "Tom"
        self.age = 20

p = Person()

# Attribut abrufen
print(getattr(p, "name"))   # Ausgabe: Tom
print(getattr(p, "age"))    # Ausgabe: 20

# Verwendung der Punktnotation
print(p.name)               # Ausgabe: Tom

Erwartete Ausgabe:

Tom
20
Tom

Code-Erklärung:

  1. getattr() und der Zugriff per Punktnotation haben denselben Effekt.
  2. Der Vorteil von getattr() ist, dass du den Attributnamen mit einem String angeben kannst.

Beispiel 2: Verwendung eines Standardwerts

Beispiel

class Person:
    def __init__(self):
        self.name = "Tom"

p = Person()

# Ein vorhandenes Attribut abrufen
print(getattr(p, "name", "unknown"))  # Ausgabe: Tom

# Ein nicht vorhandenes Attribut abrufen (mit Standardwert)
print(getattr(p, "age", 0))        # Ausgabe: 0
print(getattr(p, "city", "Beijing"))  # Ausgabe: Beijing

# Ein nicht vorhandenes Attribut abrufen (ohne Standardwert)
try:
    print(getattr(p, "gender"))
except AttributeError as e:
    print(f"Attribut existiert nicht: {e}")

Erwartete Ausgabe:

Tom
0
北京
属性不存在: 'Person' object has no attribute 'gender'

Code-Erklärung:

  • Der dritte Parameter stellt einen Standardwert bereit, um Ausnahmen zu vermeiden.
  • Dies ist nützlich beim Umgang mit optionalen Attributen.

Beispiel 3: Dynamischer Zugriff

Beispiel

# Attribut dynamisch auswählen
data = {"name": "Tom", "age": 20}
field = "name"
print(getattr(data, field))  # Zugriff über Zeichenkette

# Wird mit setattr verwendet
class Person:
    pass

p = Person()

# Attribut dynamisch setzen
fields = ["name", "age", "city"]
values = ["Tom", 20, "Beijing"]

for field, value in zip(fields, values):
    setattr(p, field, value)

# Alle Attribute dynamisch abrufen
for field in fields:
    print(f"{field}: {getattr(p, field)}")

# hasattr kombiniert mit getattr
if hasattr(p, "name"):
    print(f"Name is: {getattr(p, 'name)}")

Ausgabe:

Die Ausführung in einer tatsächlichen Umgebung zeigt das dynamisch festgelegte Attribut an.

getattr()Es ist eine sehr wichtige Funktion in der dynamischen Programmierung mit Python.


Python3 内置函数Python3 integrierte Funktionen


Andere Erweiterungen