Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Métodos de Magia Matemática | Métodos Mágicos
Programación Orientada a Objetos en Python a Fondo
course content

Contenido del Curso

Programación Orientada a Objetos en Python a Fondo

Programación Orientada a Objetos en Python a Fondo

1. Conceptos de POO
2. Herencia
3. Encapsulamiento
4. Polimorfismo y Abstracción
5. Métodos Mágicos

Métodos de Magia Matemática

Existen métodos mágicos adicionales para diversas operaciones matemáticas en Python. Además del método mágico __add__, que se utiliza para sumar, existen otros métodos mágicos para diferentes operaciones matemáticas:

Método MágicoOperación
__add__(self, other)+
__sub__(self, other) `-
"mul__(self, other)`*
__pow__(self, other)**
Mod__(yo, otro) %
__truediv__(self, other)/
__floordiv__(self, other)//

Estos métodos mágicos suelen recibir dos argumentos: self (que representa la instancia, que es el operando derecho de la expresión) y other (que representa el operando izquierdo de la expresión). Por convención, es común referirse al segundo argumento como other u other_obj, pero tienes la flexibilidad de usar un nombre diferente si hace que el código sea más significativo o claro en el contexto de tu clase y sus operaciones. El nombre del segundo argumento debe reflejar su propósito y papel en la operación matemática que se está implementando.

``python a + b # se escribe a.add(b) # Python realiza

yo = a, otro = b

Veamos el ejemplo con el objeto int:

1234
a, b = 25, 12 print("a * b =", a * b) print("a.__mul__(b) =", a.__mul__(b))
copy

Crear un método mágico en Python nos permite definir una lógica personalizada para operadores matemáticos. Típicamente, estos métodos devuelven una nueva instancia de la clase donde ciertos atributos son sumados, multiplicados, divididos, etc. Por ejemplo, en una clase Carretera, el operador + podría devolver una nueva carretera con la longitud añadida, como se comentó en el primer capítulo de esta sección.

Mejoremos el ejemplo del primer capítulo de esta sección:

1234567891011121314151617
class Road: def __init__(self, length): self.length = length def __add__(self, other): if isinstance(other, Road): return Road(self.length + other.length) return Road(self.length + other) road_1 = Road(20) road_2 = Road(30) road_3 = road_1 + road_2 # road_3 = road_1.__add__(road_2) road_4 = road_2 + 62 print(type(road_3), type(road_4)) print(road_3.length) print(road_4.length)
copy

Comparado con Java o JavaScript, en Python, en lugar de definir un método regular add para añadir clases, podemos cambiar el comportamiento del operador +, que es mucho más cómodo de usar (instance1 + instance2) que llamar a instance1.add(instance2) cada vez.

¿Qué método mágico debe utilizarse?

Selecciona la respuesta correcta

¿Todo estuvo claro?

Sección 5. Capítulo 3
We're sorry to hear that something went wrong. What happened?
some-alt