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:
Comentarios
Publicar un comentario