Python getattr()-Funktion
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
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:
- getattr() und der Zugriff per Punktnotation haben denselben Effekt.
- 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}")
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)}")
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 integrierte Funktionen
Andere Erweiterungen