Python setattr()-Funktion

Python3 内置函数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 (gibtNone)。
  • Entsprechende Funktion: Wird verwendet mitgetattr()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

Erwartete Ausgabe:

Tom
20
Beijing
Tom

Codeanalyse:

  1. setattr(obj, 'name', 'Tom')Äquivalent zuobj.name = 'Tom'。
  2. Der Attributname wird als String übergeben, was dynamisches Setzen ermöglicht.
  3. Kann verwendet werden mitgetattr()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

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')}")

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 内置函数Python3 integrierte Funktionen


Andere Erweiterungen