Obtener el reflejo de la información del objeto.
La llamada reflexión se refiere a la operación (que incluye: adición, eliminación, modificación y modificación) de propiedades y métodos de objetos en forma de cadenas de caracteres.
-
hasattr (objeto, nombre)
Se usa para determinar si el objeto especificado tiene los atributos y métodos especificados por el nombre del parámetro
-
getattr (objeto, nombre [, predeterminado])
Se utiliza para obtener el atributo y el nombre del método en el objeto objeto especificado
Si no se especifica el parámetro predeterminado, se genera AttributeError cuando no hay ningún atributo y método llamado nombre en el objeto
Si se especifica el parámetro predeterminado, se devolverá el valor predeterminado cuando no haya ninguna propiedad y método llamado nombre en el objeto
getattr (objeto, nombre) es equivalente a: object.name
-
setattr (objeto, nombre, valor)
Se usa para agregar o modificar el atributo y el método llamado nombre del parámetro en el objeto especificado, el valor agregado o modificado es el valor
setattr (objeto, nombre, valor) es equivalente a object.name = value
-
delattr (objeto, nombre)
Se utiliza para eliminar el atributo o método llamado nombre del parámetro en el objeto especificado
delattr (objeto, nombre) es equivalente a: del object.name
Nota: solo cuando no se conoce la información del objeto, se obtendrá la información del objeto. Por lo tanto, si puede escribir directamente: object.name,
No escriba como getattr (objeto, 'nombre').
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'))