Ir al contenido principal

Métodos mágicos en Python



Los métodos Dunder o magic en Python son los métodos que tienen dos guiones bajos de prefijo y sufijo en el nombre del método. Dunder aquí significa "Double Under (subrayado)". Estos se usan comúnmente para la sobrecarga del operador. Pocos ejemplos de métodos mágicos son: __init__, __add__, __len__, __repr__ etc.

El método __init__ para la inicialización se invoca sin ninguna llamada, cuando se crea una instancia de una clase, como los constructores en ciertos otros lenguajes de programación como C ++, Java, C #, PHP, etc. Estos métodos son la razón por la que podemos agregar dos cadenas con ' + 'operador sin ningún tipo de conversión explícito.

Aquí hay una implementación simple:

# declare our own string class
class String:
         # magic method to initiate object
def __init__(self, string):
self.string = string
# Driver Code
if __name__ == '__main__': 
# object creation
string1 = String('Hello')
# print object location
print(string1) 

El fragmento de código anterior solo imprime la dirección de memoria del objeto de cadena. 

Agreguemos un método __repr__ para representar nuestro objeto.

# declare our own string class
class String: 
# magic method to initiate object
def __init__(self, string):
self.string = string 
# print our string object
def __repr__(self):
return 'Object: {}'.format(self.string)
# Driver Code
if __name__ == '__main__':
# object creation
string1 = String('Hello')
# print object location
print(string1) 

Si intentamos agregarle una cadena:

# declare our own string class
class String:
# magic method to initiate object
def __init__(self, string):
self.string = string  # print our string object
def __repr__(self):
return 'Object: {}'.format(self.string)
# Driver Code
if __name__ == '__main__':
# object creation
string1 = String('Hello')
# concatenate String object and a string
print(string1 +' world') 

Ahora agregue el método __add__ a la clase String:

# declare our own string class
class String:
# magic method to initiate object
def __init__(self, string):
self.string = string  # print our string object
def __repr__(self):
return 'Object: {}'.format(self.string)  def __add__(self, other):
return self.string + other
# Driver Code
if __name__ == '__main__':  # object creation
string1 = String('Hello')  # concatenate String object and a string
print(string1 +' Geeks') 


Comentarios

Entradas populares de este blog

Probablemente no deberías usar cualquier cable para cargar tu iPhone

A menos que quieras que un hacker pueda secuestrar su portátil..... Si parece un cable de carga, se ve q es un cable de carga y carga su teléfono, debe ser un cable de carga, ¿verdad? Bueno, un poco si. Pero eso no significa que eso únicamente sea eso. Mike Grover, un investigador de seguridad con sede en San Francisco, ha hecho un cable de carga para iPhone, que, cuando está conectado al teléfono en un extremo y su portátil en el otro, puede piratear el portátil. ¿Suena siniestro? Solo porque hay mucho en juego. El autor intelectual detrás del hack puede enviar correos electrónicos de phishing, etc... Grover comenzó a experimentar con cables maliciosos en 2017 como parte de un intento de aprender cómo diseñar, fabricar y ensamblar placas de circuito impreso, lo que hace a mano con herramientas de consumo de su cocina. Entonces comenzó a suceder algo gracioso: la gente se enteró de los cables de Grover, por lo que decidió comenzar a venderlos. En este momento, los cables O

Preguntas y respuestas sobre Raspberry Pi

¿Le resulta difícil buscar respuestas a sus preguntas sobre Raspberry Pi? ¿Busca ayuda para comenzar un proyecto? ¿Tiene alguna pregunta que necesita respuesta? ¿Una pregunta para la que solo has hecho investigación básica? ¿Tal vez algo que piensas que todos menos tú sabes? P: ¿Alguien tiene alguna idea de lo que puedo hacer con mi Pi? A: Prácticamente cualquier cosa, puedes ver infinidad de proyectos en internet . P: Mi Pi se comporta de manera extraña, ¿qué hago? R: La tarjeta SD es mala o problemas de energía. El 99.999% de las veces es una de estas dos cosas. P: ¿Qué modelo de Raspberry Pi debería obtener? R: Obtenga la Raspberry Pi 4B con 4GB de RAM P: ¿Puedo usar la tarjeta SD de otra Pi en mi Pi 4? R: Solo si la tarjeta SD ya tiene Raspbian Buster P: Encontré una guía antigua que me dice exactamente cómo hacer algo, ¿debería seguirla? A: Sí, síguelo. Si te quedas atascado, regresa y describe en google el paso exacto en el que estás atascado. P: ¿Cuándo se l