Sobrecarga de Operadores em Python – Curso de Programação em Python

180 6

Bem vindos á décima nona aula do nosso curso de Programação em Python!

Hoje falaremos um pouco da sobrecarga de métods e Operadores em Python.Quando aplicamos os sinais +,-,*,/, sobre strings ou interos, resulta na soma,etc. de acordo com cada tipo de dado.As vezes é necessário que as instâncias da nossa classe também respondam a acção de determinados operadores. Podemos fazer isso aplicando certos métodos predefinidos de Python: __add__, __mul__, __div__. Não preciso dizer para que serve cada um dos métodos, pois é evidente que ao aplicarmos __add__ estamos fazendo com que as instâncias desta classe respondam ao operador de adição,etc.Vamos fazer um exemplo de uma classe que sobrecarrega todos os operadores básicos:

class Operador:    def __init__(self,num):        self.num=num    def __add__(self,op):        return self.num+op.num    def __mul__(self,op):        return self.num*op.num    def __div__(self,op):        return self.num/op.num

Agora podemos ir até ao Idle para testar a nossa recém criada classe:

>>>x=Operador(10)>>>y=Operador(5)>>>x+y 15>>>x/y 2

Mas o que aconteceu na realidade!!!!Por padrão uma instância não responde aos operadores de soma, multiplicação,etc. Mas nós podemos fazer classes terem determinado comportamento de quando aplicado certo operador. Por exemplo, para inteiros o perador + resulta na sua soma, enquanto que para strings na sua concatenação. Então, é possivel modificar, para que a nssa instância execute uma multiplicação quando aplicado o operador + e uma divisão para *, etc.(mas você não vai fazer isso né!).Ai está mais um conceito importante da orientação á objectos!Falando em orientação á objectos, até aqui, já estamos aptos para decifrar qualquer framework Python, pois já conhecemos o básico sobre o funcionamento desta linguagem! Daqui a pouco tempo, começaremos a fazer isso, pois temos uma lista enorme de frameworks, módulos,etc. para desvendar( Python é muito dinâmico, até mesmo no aparecimento de módulos novos!) , vou colocar aqui alguns frameworks e módulos importantes que eu conheço:

  • Django(Para o desenvolvimento de aplicações web)
  • Tkinter( Para a construção de interfaces gráficas)
  • WxPython( Também para interfaces gráficas)
  • Blender game engine( engines 3D para jogos)
  • Panda3D( engine 3D para jogos)
  • Pygame( Para jogos 2D)
  • Vpython( Python Visual)

Existem muito mais por ai, é só procurar que você vai encontrar exactamente o que procura!

(Visited 20 times, 1 visits today)