Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Métodos Mágicos de Matemática | Métodos Mágicos
Programação Orientada a Objetos em Python Avançado
course content

Conteúdo do Curso

Programação Orientada a Objetos em Python Avançado

Programação Orientada a Objetos em Python Avançado

1. Conceitos de POO
2. Herança
3. Encapsulamento
4. Polimorfismo e Abstração
5. Métodos Mágicos

Métodos Mágicos de Matemática

Há métodos mágicos adicionais para várias operações matemáticas em Python. Além do método mágico __add__, que é utilizado para adição, existem outros métodos mágicos para diferentes operações matemáticas:

Método MágicoOperação
__add__(self, other)+
__sub__(self, other)-
__mul__(self, other)*
__pow__(self, other)**
__mod__(self, other)%
__truediv__(self, other)/
__floordiv__(self, other)//

Esses métodos mágicos normalmente recebem dois argumentos: self (representando a instância, que é o operando direito na expressão) e other (representando o operando esquerdo na expressão). Por convenção, é comum se referir ao segundo argumento como other ou other_obj, mas você tem a flexibilidade de usar um nome diferente se isso tornar o código mais significativo ou claro no contexto da sua classe e suas operações. O nome do segundo argumento deve refletir seu propósito e papel na operação matemática que está sendo implementada.

Vamos analisar o exemplo com o objeto int:

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

Criar um método mágico em Python nos permite definir uma lógica personalizada para operadores matemáticos. Tipicamente, esses métodos retornam uma nova instância da classe onde certos atributos são adicionados, multiplicados, divididos, etc. Por exemplo, em uma classe Road, o operador + poderia retornar uma nova estrada com o comprimento adicionado, conforme discutido no primeiro capítulo desta seção.

Vamos aprimorar o exemplo do primeiro capítulo desta seção:

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 com Java ou JavaScript, em Python, em vez de definir um método regular add para adicionar classes, podemos alterar o comportamento do operador +, o que é muito mais conveniente de usar (instance1 + instance2) do que chamar instance1.add(instance2) toda vez.

Qual método mágico deve ser usado?

Selecione a resposta correta

Tudo estava claro?

Seção 5. Capítulo 3
We're sorry to hear that something went wrong. What happened?
some-alt