7.5 Clases y objetos en Python: métodos especiales

En el lenguaje Python, todo es un objeto, incluidos los tipos de datos primitivos. Las clases proporcionan una manera de empaquetar datos y funcionalidades juntos. Al crear una nueva clase, creamos un nuevo tipo de objeto, lo que permite crear nuevas instancias de ese tipo. Cada instancia de clase puede tener atributos adjuntos para mantener su estado. Las instancias de clase también pueden tener métodos (definidos por su clase) para modificar su estado.

Los métodos especiales son una característica clave de Python, que le permite crear clases que se comportan como tipos de datos integrados. Esto significa que puede utilizar métodos especiales para sobrecargar operadores y funciones estándar para que funcionen con sus clases personalizadas. Estos métodos especiales siempre están rodeados por guiones bajos dobles (__) y se conocen como "métodos dunder".

Método __init__

El método __init__ es un método especial que se llama automáticamente cuando se crea un objeto a partir de una clase. Este método se utiliza normalmente para realizar cualquier inicialización necesaria. Aquí tienes un ejemplo:

clase MiClase:
  def __init__(yo):
    auto.datos = []

En este ejemplo, el método __init__ se utiliza para inicializar el atributo de datos para cada nueva instancia de la clase MyClass.

Métodos __str__ y __repr__

Los métodos __str__ y __repr__ se utilizan para proporcionar representaciones de cadenas de un objeto. El método __str__ es llamado por la función str(obj) y la función print para convertir el objeto en una cadena. El método __repr__ se usa para proporcionar una representación de cadena que se puede usar para recrear el objeto usando la función eval().

clase MiClase:
  def __init__(yo, nombre):
    self.nombre = nombre

  def __str__(yo):
    devolver f'MiClase({self.name})'

  def __repr__(yo):
    devolver f'MiClase({self.name})'

Métodos __eq__ y __ne__

Los métodos __eq__ y __ne__ se utilizan para sobrecargar los operadores de igualdad y desigualdad. El método __eq__ se llama cuando se comparan dos objetos utilizando el operador de igualdad (==). El método __ne__ se llama cuando se utiliza el operador de desigualdad (!=).

clase MiClase:
  def __init__(yo, nombre):
    self.nombre = nombre

  def __eq__(yo, otro):
    si es instancia (otro, MiClase):
      devolver auto.nombre == otro.nombre
    falso retorno

  def __ne__(yo, otro):
    devolver no self.__eq__(otro)

Métodos de operadores aritméticos

Existen varios métodos especiales que se pueden utilizar para sobrecargar operadores aritméticos, incluidos __add__, __sub__, __mul__, __truediv__ y muchos otros. Cada uno de estos métodos se llama cuando se utiliza el operador correspondiente en objetos de la clase.

Por ejemplo, así es como podrías sobrecargar el operador de suma para una clase que representa un vector matemático:

vector de clase:
  def __init__(yo, x, y):
    yo.x = x
    yo.y = y

  def __add__(yo, otro):
    si es una instancia (otro, Vector):
      devolver Vector(self.x + other.x, self.y + other.y)
    demás:
      rise TypeError('Los vectores solo se pueden agregar a otros vectores.')

Esto es sólo una introducción a los métodos especiales en Python. Hay muchos otros métodos especiales disponibles que le permiten personalizar el comportamiento de sus clases de manera potente y flexible.

Ahora responde el ejercicio sobre el contenido:

_¿Cuál de los siguientes métodos especiales se llama automáticamente cuando se crea un objeto a partir de una clase de Python?

¡Tienes razón! Felicitaciones, ahora pasa a la página siguiente.

¡Tú error! Inténtalo de nuevo.

Imagen del artículo Clases y objetos en Python: constructores y destructores

Siguiente página del libro electrónico gratuito:

42Clases y objetos en Python: constructores y destructores

2 minutos

¡Obtén tu certificado para este curso gratis! descargando la aplicación Cursa y leyendo el libro electrónico allí. ¡Disponible en Google Play o App Store!

Disponible en Google Play Disponible en App Store

+ 6,5 millones
estudiantes

Certificado gratuito y
válido con código QR

48 mil ejercicios
gratis

Calificación de 4.8/5
en tiendas de aplicaciones

Cursos gratuitos de
vídeo, audio y texto.