Lección 7.3.2: Métodos Especiales, Segunda Parte
Métodos Especiales en Python POO: __len__, __getitem__, y más
Introducción
¡Hola a todos! Soy Yuscu Mejía y en esta lección vamos a explorar más métodos especiales en Python orientado a objetos, como __len__, __getitem__, y otros. Estos métodos nos permiten definir cómo se comportan nuestros objetos en ciertas operaciones y cómo interactúan con funciones y operadores integrados.
Características
Los métodos especiales en Python, también conocidos como métodos mágicos, tienen las siguientes características:
__len__: Define el comportamiento de la funciónlen()para un objeto.__getitem__: Define el comportamiento de la obtención de elementos mediante índices, comoobj[index].- Estos métodos especiales se definen dentro de la clase y se invocan automáticamente cuando se realiza la operación correspondiente.
- Permiten personalizar y extender el comportamiento de los operadores y funciones integradas de Python.
Ejemplos
A continuación, algunos ejemplos de cómo utilizar los métodos especiales __len__ y __getitem__ en Python:
- Definición de una clase con los métodos
__len__y__getitem__:
# Definir una clase llamada 'MiLista'
class MiLista:
def __init__(self, elementos):
self.elementos = elementos
def __len__(self):
return len(self.elementos)
def __getitem__(self, index):
return self.elementos[index]
# Crear una instancia de la clase 'MiLista'
mi_lista = MiLista([1, 2, 3, 4, 5])
# Utilizar el método __len__
print(len(mi_lista)) # Imprime: 5
# Utilizar el método __getitem__
print(mi_lista[2]) # Imprime: 3
Práctica
Para practicar, les invito a ver nuestro tutorial en video sobre métodos especiales en Python POO:
Recorda si te gusta los videos, te agradeceria si le pones un comentario o un like para saber si subir mas videos! 😮
Si no sabes que comentar, comenta con: estoy avanzando rapido con el curso de Programacion python 🙂 asi te detectaremos que viniste de aca, para una estadistica si conviene o no subir videos

Ejercicio 1
A la clase Empresa que vimos en el video agregarle un método especial para comparar su stock, implementando los métodos especiales __eq__ y __ne__ para utilizar los objetos con == y !=.
1) Crear dos empresas donde la primera tiene “pc” y “monitor” como productos, mientras que la segunda tiene solo “lapiz”.
2) Implementar los métodos especiales __eq__ y __ne__ y comparar si estos dos objetos son ==.
3) Comparar si son distintos estos dos objetos de la clase Empresa.
#Ejercicio1
class Empresa:
"""Clase para administrar los productos de nuestra empresa"""
def __init__(self, duenio):
"""Constructor para inicializar la instancia"""
self.duenio = duenio
self.stock = 0 # cantidad de productos disponibles
self.productos = [] # lista de productos
def guardarProducto(self, producto):
self.productos.append(producto)
self.stock += 1
return "Se guardó el producto {} y el stock subió a {}".format(producto, self.stock)
def __str__(self):
return "Empresa del señor {} con una cantidad de stock {}".format(self.duenio, self.stock)
def __add__(self, otra_empresa):
# devolver otro objeto, nunca modificar la clase de origen
duenio = "{} & {}".format(self.duenio, otra_empresa.duenio)
stock_total = self.stock + otra_empresa.stock
empresa3 = Empresa(duenio)
empresa3.productos = self.productos + otra_empresa.productos
empresa3.stock = stock_total
return empresa3
def __len__(self):
return self.stock
def __getitem__(self, indice):
return self.productos[indice]
def __ne__(self, otra_empresa):
return self.stock != otra_empresa.stock
def __eq__(self, otra_empresa):
return self.stock == otra_empresa.stock
# 1) Crear dos empresas con productos diferentes
empresa1 = Empresa("yuscu")
empresa1.guardarProducto("pc")
empresa1.guardarProducto("monitor")
empresa2 = Empresa("juan")
empresa2.guardarProducto("lapiz")
# 2) Comparar si estos dos objetos son ==
print(empresa1 == empresa2) # False, porque tienen diferentes cantidades de stock
# 3) Comparar si estos dos objetos son !=
print(empresa1 != empresa2) # True, porque tienen diferentes cantidades de stock

