Python aprendizaje introspección / reflexión

Introspección / Reflexión La
introspección también se denomina reflexión, esta propiedad muestra cómo un objeto obtiene su propia información durante el tiempo de ejecución. Si le pasa un objeto,
puede averiguar qué capacidades tiene. Esta es una característica poderosa. Si Python no admite alguna forma de introspección, las
funciones incorporadas de directorio y tipo serán difíciles de trabajar correctamente. También hay atributos especiales como __dict__, __name__ y __doc__

class myClass (object):
    def __init __ (self):
        self.foo = 100
    
    def bar (self):
        print ("print bar")


myInst = myClass ()
print (hasattr (myInst, 'foo')) # Si el objeto de clase de instancia tiene el atributo foo, devuelve el valor booleano
print (getattr (myInst, 'foo')) # Toma el valor del atributo foo del objeto de clase de instancia
print (hasattr (myInst , 'bar')) # Si el objeto de clase de instancia tiene una función de barra, devuelve el valor booleano
print (getattr (myInst, 'errorbar', 'oops!')) # La primera instancia de parámetro, el segundo parámetro tiene un atributo de barra de error
# Si no existe tal atributo, se imprime oops de forma predeterminada y no se arroja ningún parámetro predeterminado.
Print (getattr (myInst, 'bar', 'oops!')) # El segundo parámetro existe y devuelve la dirección de memoria del objeto
setattr (myInst, 'b', 'test123') # Establezca un nuevo atributo de instancia, la primera instancia de parámetro, el segundo atributo de parámetro, el tercer valor de atributo de parámetro
setattr (myInst, 'age', lambda self: self.foo + 200)
delattr (myInst, 'b') # Eliminar los atributos de una instancia
print ((dir (myClass)))
print (dir (myInst))
print (dir ())
print (dir (myInst.foo))
print ( myInst .__ dict__)
print (myInst.age (myInst))

Ejemplo 2:
clase FtpClient:
    'cliente ftp, pero todavía hay una función específica implementada'
    def __init __ (self, addr):
        print ('conectando al servidor [% s ] '% addr)
        self.addr = addr
        
#desde el módulo import FtpClient
f1 = FtpClient (' 192.168.1.1 ')
if hasattr (f1,' get '):
    func_get = getattr (f1,' get ')
    func_get ()
else:
    print ('----> Este método no existe')
    print ('Manejar otra lógica')

Supongo que te gusta

Origin www.cnblogs.com/jinpingzhao/p/12735540.html
Recomendado
Clasificación