Holen Sie sich die Reflexion der Objektinformationen
Die sogenannte Reflexion bezieht sich auf die Operation (einschließlich: Hinzufügen, Löschen, Ändern und Ändern) von Objekteigenschaften und -methoden in Form von Zeichenfolgen.
-
hasattr (Objekt, Name)
Wird verwendet, um zu bestimmen, ob das angegebene Objekt die durch den Parameternamen angegebenen Attribute und Methoden aufweist
-
getattr (Objekt, Name [, Standard])
Wird verwendet, um das Attribut und die Methode namens name im angegebenen Objektobjekt abzurufen
Wenn der Standardparameter nicht angegeben wird, wird AttributeError ausgelöst, wenn das Objekt kein Attribut und keinen Methodennamen enthält
Wenn der Parameter default angegeben ist, wird default zurückgegeben, wenn das Objekt keine Eigenschaft und keinen Methodennamen enthält
getattr (Objekt, Name) entspricht: object.name
-
setattr (Objekt, Name, Wert)
Wird verwendet, um das Attribut und die Methode mit dem Namen Parametername im angegebenen Objekt hinzuzufügen oder zu ändern. Der hinzugefügte oder geänderte Wert ist value
setattr (Objekt, Name, Wert) entspricht object.name = value
-
delattr (Objekt, Name)
Wird verwendet, um das Attribut oder die Methode mit dem Namen Parametername im angegebenen Objekt zu löschen
delattr (Objekt, Name) entspricht: del object.name
Hinweis: Nur wenn die Objektinformationen nicht bekannt sind, werden die Objektinformationen abgerufen. Wenn Sie also direkt schreiben können: object.name,
Schreiben Sie nicht als getattr (Objekt, 'Name').
class Myclass(object): def __init__(self): self.x = 1 def do_sth(self): print("do_sth被调用") mc = Myclass() print(hasattr(mc, 'x')) # True print(hasattr(mc, "do_sth")) # True print(hasattr(mc, 'y')) # False print(getattr(mc, 'x')) # 1 f = getattr(mc, 'do_sth') f() # print(getattr(mc, 'y'))#AttributeError print(getattr(mc, 'y', 2)) setattr(mc, 'z', 3) print(getattr(mc, 'z')) setattr(mc, 'z', 4) print(mc.z) delattr(mc, 'z') print(hasattr(mc, 'z'))