Los métodos Dunder o mágicos en Python son los métodos que tienen dos guiones bajos de prefijo y sufijo en el nombre del método. Dunder aquí significa «Doble bajo (guiones bajos)». Estos se utilizan comúnmente para la sobrecarga del operador. Algunos ejemplos de métodos mágicos son: __init__, __add__, __len__, __repr__
etc.
El __init__
método de inicialización se invoca sin ninguna llamada, cuando se crea una instancia de una clase, como constructores en otros lenguajes de programación como C++, Java, C#, PHP, etc. Estos métodos son la razón por la que podemos agregar dos strings con ‘+ ‘ operador sin ningún encasillamiento 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)
Producción :
<__main__.String object at 0x7fe992215390>
El fragmento de código anterior imprime solo la dirección de memoria del objeto de string. Agreguemos un __repr__
método 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)
Producción :
Object: Hello
Si tratamos de agregarle una 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) # Driver Code if __name__ == '__main__': # object creation string1 = String('Hello') # concatenate String object and a string print(string1 +' world')
Producción :
TypeError: unsupported operand type(s) for +: 'String' and 'str'
Ahora agregue __add__
el método 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')
Producción :
Hello Geeks
Referencia: docs.python.org .
Publicación traducida automáticamente
Artículo escrito por mohit_negi y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA