Dunder o métodos mágicos en Python

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *