Python setattr()-Funktion
Python3 integrierte Funktionen
setattr()ist eine in Python integrierte Funktion, mit der Objektattribute festgelegt werden.
Im Gegensatz zur direkten Verwendung der Punktnotation (.) für die Zuweisung,setattr()ermöglicht es Ihnen, Objektattribute dynamisch über Strings festzulegen. Dies ist sehr nützlich, wenn Sie Attribute basierend auf Variablennamen festlegen oder unbekannte Attribute behandeln müssen.
Wortdefinition: setattrJaset attributeAbkürzung für "set attribute".
Grundlegende Syntax und Parameter
Syntaxformat
setattr(obj, name, value)
Parameterbeschreibung
- Parameter obj:
- Typ: Beliebiges Objekt
- Beschreibung: Das Objekt, dessen Attribut festgelegt werden soll.
- Parametername:
- Typ: String
- Beschreibung: Der Name des festzulegenden Attributs (in Zeichenkettenform).
- Parameterwert:
- Typ: Beliebiger Wert
- Beschreibung: Der festzulegende Wert.
Funktionsbeschreibung
- Rückgabewert: Kein Rückgabewert (gibt
None)。 - Entsprechende Funktion: Wird verwendet mit
getattr()zusammen mit der Funktion,getattrverwendet, um Attribute abzurufen.
Beispiele
Beispiel 1: Grundlegende Verwendung
Beispiel
# Eine einfache Klasse erstellen
class Person:
pass
# Ein Objekt erstellen
p = Person()
# setattr verwenden, um Attribute festzulegen
setattr(p, 'name', 'Tom')
setattr(p, 'age', 20)
setattr(p, 'city', 'Beijing')
# Überprüfen, ob das Attribut gesetzt wurde
print(p.name) # Ausgabe: Tom
print(p.age) # Ausgabe: 20
print(p.city) # Ausgabe: Beijing
# getattr verwenden, um Attribute abzurufen
print(getattr(p, 'name')) # Ausgabe: Tom
class Person:
pass
# Ein Objekt erstellen
p = Person()
# setattr verwenden, um Attribute festzulegen
setattr(p, 'name', 'Tom')
setattr(p, 'age', 20)
setattr(p, 'city', 'Beijing')
# Überprüfen, ob das Attribut gesetzt wurde
print(p.name) # Ausgabe: Tom
print(p.age) # Ausgabe: 20
print(p.city) # Ausgabe: Beijing
# getattr verwenden, um Attribute abzurufen
print(getattr(p, 'name')) # Ausgabe: Tom
Erwartete Ausgabe:
Tom 20 Beijing Tom
Codeanalyse:
setattr(obj, 'name', 'Tom')Äquivalent zuobj.name = 'Tom'。- Der Attributname wird als String übergeben, was dynamisches Setzen ermöglicht.
- Kann verwendet werden mit
getattr()zusammen.
Beispiel 2: Attribute dynamisch setzen
Beispiel
class Student:
pass
# Mehrere Attribute dynamisch setzen
student = Student()
fields = ['name', 'age', 'grade', 'school']
values = ['Lily', 18, 'A', 'MIT']
for field, value in zip(fields, values):
setattr(student, field, value)
# Alle Attribute ausgeben
for field in fields:
print(f"{field}: {getattr(student, field)}")
# Ein nicht existierendes Attribut setzen
setattr(student, 'major', 'Computer Science')
print(student.major) # Ausgabe: Computer Science
pass
# Mehrere Attribute dynamisch setzen
student = Student()
fields = ['name', 'age', 'grade', 'school']
values = ['Lily', 18, 'A', 'MIT']
for field, value in zip(fields, values):
setattr(student, field, value)
# Alle Attribute ausgeben
for field in fields:
print(f"{field}: {getattr(student, field)}")
# Ein nicht existierendes Attribut setzen
setattr(student, 'major', 'Computer Science')
print(student.major) # Ausgabe: Computer Science
Erwartete Ausgabe:
name: Lily age: 18 grade: A school: MIT Computer Science
Codeanalyse:
- Mehrere Attribute können dynamisch durch eine Schleife gesetzt werden.
- setattr kann neue Attribute zu einem Objekt hinzufügen.
- Dies ist nützlich beim Umgang mit Konfigurationsdateien oder Benutzereingaben.
Beispiel 3: Arbeiten mit __dict__
Beispiel
# __dict__ des Objekts anzeigen
class Car:
def __init__(self):
self.brand = "Toyota"
car = Car()
print(car.__dict__) # Ausgabe: {'brand': 'Toyota'}
# setattr verwenden, um Attribute hinzuzufügen
setattr(car, 'model', 'Camry')
setattr(car, 'year', 2024)
print(car.__dict__) # Ausgabe: {'brand': 'Toyota', 'model': 'Camry', 'year': 2024}
# Prüfen, ob das Attribut existiert
if hasattr(car, 'brand'):
print(f"Marke: {getattr(car, 'brand')}")
class Car:
def __init__(self):
self.brand = "Toyota"
car = Car()
print(car.__dict__) # Ausgabe: {'brand': 'Toyota'}
# setattr verwenden, um Attribute hinzuzufügen
setattr(car, 'model', 'Camry')
setattr(car, 'year', 2024)
print(car.__dict__) # Ausgabe: {'brand': 'Toyota', 'model': 'Camry', 'year': 2024}
# Prüfen, ob das Attribut existiert
if hasattr(car, 'brand'):
print(f"Marke: {getattr(car, 'brand')}")
Erwartete Ausgabe:
{'brand': 'Toyota'}
{'brand': 'Toyota', 'model': 'Camry', 'year': 2024}
品牌: Toyota
setattr()Wird normalerweise verwendet mitgetattr()、hasattr()、delattr()zusammen, wodurch ein vollständiges Werkzeugset für Attributoperationen entsteht.
Python3 integrierte Funktionen
Andere Erweiterungen