Article image
Ricardo Marzano
Ricardo Marzano07/05/2024 14:44
Share

Desmistificando a Orientação a Objetos em Python: Um Guia Prático para Iniciantes e Além

  • #Python

E aí, galera nerd do Python! 👋 Você já ouviu falar desse tal de Orientação a Objetos em Python e ficou meio perdido? Relaxa, meu amigo, porque a gente vai desvendar esse mistério juntos! No nosso super artigo "Desmistificando a Orientação a Objetos em Python: Um Guia Prático para Iniciantes e Além", vamos te levar por uma jornada épica pelo mundo dos objetos, classes e métodos!

Prepare-se para uma aventura cheia de código maneiro e explicações na linguagem que a gente entende, sem aquele papo chato e complicado que só confunde mais. Se você é novato na programação ou já está nesse universo há algum tempo, mas ainda se sente perdido quando o assunto é Orientação a Objetos, relaxa! Este guia é pra você!

Irei te ensinar desde o básico, tipo o que é uma classe e um objeto, até coisas mais avançadas, tipo métodos, herança e polimorfismo. E claro, usaremos exemplos bem reais, do tipo que você pode aplicar nos seus próprios projetos e ficar craque em Python! Então, se prepara aí, pega seu energético favorito e vem comigo nessa jornada épica pelo mundo dos objetos em Python! 🚀🐍

image

Orientação a Objetos (OO) em Python é um paradigma de programação que permite organizar o código em estruturas chamadas "objetos". Cada objeto possui dados (também chamados de atributos) e funcionalidades (métodos) associadas a ele. Em Python, praticamente tudo é um objeto, desde números e strings até funções e classes.

Definição de Classes e Objetos

Classes em Python são como plantas baixas para construir objetos. Elas definem a estrutura e o comportamento dos objetos que serão criados a partir delas. Por exemplo, se estivermos construindo um sistema de gerenciamento de funcionários, poderíamos ter uma classe Funcionario que define atributos como nome e salario e métodos como aumentar_salario().

class Funcionario:
  def __init__(self, nome, salario):
      self.nome = nome
      self.salario = salario

  def aumentar_salario(self, aumento):
      self.salario += aumento

Objetos são instâncias específicas de classes. Por exemplo, poderíamos criar um objeto funcionario1 a partir da classe Funcionario:

funcionario1 = Funcionario("João", 3000)

image

O construtor da classe em Python é um método especial chamado __init__(), que é invocado automaticamente quando um objeto é criado a partir da classe. Ele é usado para inicializar os atributos do objeto. Por exemplo, no código anterior, __init__() inicializa os atributos nome e salario do objeto Funcionario.

Métodos de Classes

Métodos de classes são funções definidas dentro da classe e operam em objetos dessa classe. Eles podem acessar e modificar os atributos do objeto ou realizar qualquer outra operação necessária. Por exemplo, o método aumentar_salario() na classe Funcionario aumenta o salário do funcionário em uma determinada quantia.

Métodos de Classe com Retorno

Métodos de classe em Python podem retornar valores, assim como qualquer outra função em Python. Por exemplo, podemos ter um método na classe Calculadora que retorna a soma de dois números:

class Calculadora:
  def soma(self, x, y):
      return x + y

# Uso:
calc = Calculadora()
resultado = calc.soma(5, 3)
print(resultado)  # Saída: 8

Métodos com Atributos

Métodos com atributos em Python são métodos que podem acessar e manipular os atributos do objeto. Eles são definidos da mesma forma que outros métodos de classe, mas podem utilizar os atributos como parâmetros ou retorná-los como resultado. Por exemplo, na classe Funcionario, o método aumentar_salario() manipula o atributo salario.

Outros Métodos de uma Classe em Python

Além do construtor __init__() e dos métodos de classe normais, existem outros métodos especiais em Python, como __str__() e __repr__(), que controlam como os objetos são representados como strings. Por exemplo:

class Pessoa:
  def __init__(self, nome, idade):
      self.nome = nome
      self.idade = idade

  def __str__(self):
      return f"{self.nome}, {self.idade} anos"

# Uso:
pessoa = Pessoa("Maria", 25)
print(pessoa)  # Saída: Maria, 25 anos

Como Acessar Objetos por Referência

Em Python, os objetos são acessados por referência, o que significa que quando você atribui um objeto a uma variável, na verdade está atribuindo uma referência a esse objeto. Portanto, se modificar um objeto através de uma variável, todas as outras variáveis que se referem ao mesmo objeto verão essas mudanças. Por exemplo:

funcionario1 = Funcionario("João", 3000)
funcionario2 = funcionario1  # funcionario2 referencia o mesmo objeto que funcionario1
funcionario2.aumentar_salario(500)
print(funcionario1.salario)  # Saída: 3500
print(funcionario2.salario)  # Saída: 3500

image

Em Python, a palavra reservada "self" desempenha um papel fundamental no contexto da programação orientada a objetos. Ela é utilizada dentro dos métodos de uma classe para se referir ao próprio objeto em si. Quando um método é chamado em um objeto, o Python automaticamente passa uma referência para o próprio objeto como o primeiro argumento para o método, que é então atribuído ao parâmetro "self".

class Carro:
  def __init__(self, marca, modelo):
      self.marca = marca
      self.modelo = modelo

  def exibir_info(self):
      print(f"Marca: {self.marca}, Modelo: {self.modelo}")

carro1 = Carro("Toyota", "Corolla")
carro1.exibir_info()

  • Na classe Carro, o método __init__() inicializa os atributos marca e modelo do objeto.
  • O parâmetro self no método __init__() referencia o próprio objeto que está sendo criado.
  • No método exibir_info(), a palavra reservada self é usada para acessar os atributos do objeto (self.marca e self.modelo) dentro do método.
  • Ao criar o objeto carro1, os argumentos "Toyota" e "Corolla" são passados para o método __init__().
  • Quando o método exibir_info() é chamado em carro1, a referência para o próprio objeto carro1 é passada automaticamente como o primeiro argumento (ou seja, self), permitindo que o método acesse os atributos do objeto.

Então é isso pessoal! Falei hoje sobre Orientação a Objetos em Python, que é um tema bem sagaz para galera. E que tem muito ainda que ser explorado. E vamos nessa! Até o próximo artigo! Forte abraço!

Share
Comments (1)
Raína Souza
Raína Souza - 07/05/2024 15:09

conteúdo muito massa e útil! parabéns!