Covil Do Dev

Guia Completo sobre Classes em Python: Conceitos Fundamentais e Exemplos Práticos

Aprenda sobre as Classes em Python com nosso Guia Completo! Descubra os conceitos fundamentais de orientação a objetos, como criar e usar classes, métodos, atributos e muito mais. Inclui exemplos práticos para facilitar a compreensão.

Lindomar Rodrigues

Atualizado

As classes em Python são estruturas que permitem criar objetos com atributos e métodos.

Em outras palavras, uma classe é uma representação abstrata de um objeto do mundo real.

Por exemplo, se quisermos representar um carro em Python, podemos criar uma classe chamada Carro com atributos como cor, marca e modelo, e métodos como acelerar e frear.

ad

Como definir uma classe em Python?

A definição de uma classe em Python começa com a palavra-chave class, seguida pelo nome da classe e dois pontos.

O corpo da classe é indentado e contém atributos e métodos.

Aqui está um exemplo simples:

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

    def acelerar(self):
        self.velocidade += 1
        print(f'O carro do modelo {self.modelo} está acelerando a velocidade de {velocidade} unidade(s)')

Neste exemplo, criamos uma classe chamada Carro com três atributos (cor, marca e modelo) e um método (acelerar).

O método __init__ é o construtor da classe e é chamado automaticamente quando um objeto é criado.

Como criar objetos a partir de uma classe em Python?

Uma vez que uma classe foi definida, podemos criar objetos a partir dela.

Para criar um objeto, precisamos chamar o construtor da classe.

Exemplo:

meu_carro = Carro('vermelho', 'Fiat', 'Palio')
meu_carro.acelerar(50)

Neste exemplo, criamos um objeto chamado meu_carro a partir da classe Carro e chamamos o método acelerar.

Herança de classes em Python

A herança é uma das principais características da programação orientada a objetos.

Em Python, é possível criar uma nova classe a partir de uma classe existente, herdando seus atributos e métodos.

A classe que é herdada é chamada de classe pai ou superclasse, enquanto a nova classe é chamada de classe filha ou subclasse.

Aqui está um exemplo:

class CarroEsportivo(Carro):
    def __init__(self, cor, marca, modelo, potencia):
        super().__init__(cor, marca, modelo)
        self.potencia = potencia

    def turbo(self):
        print(f'O {self.modelo} está equipado com turbo')

Neste exemplo, criamos uma classe chamada CarroEsportivo que herda da classe Carro.

A classe CarroEsportivo adiciona um novo atributo (potencia) e um novo método (turbo).

Polimorfismo de classes em Python

O polimorfismo é outra característica importante da programação orientada a objetos.

Em Python, é possível que dois objetos de classes diferentes respondam a um mesmo método de forma diferente.

Isso é possível através do uso de métodos com o mesmo nome em classes diferentes.

Aqui está um exemplo:

class Animal:
    def __init__(self, nome):
        self.nome = nome

    def fazer_som(self):
        pass

class Cachorro(Animal):
    def fazer_som(self):
        print('Au au')

class Gato(Animal):
    def fazer_som(self):
        print('Miau')

Neste exemplo, criamos uma classe Animal e duas subclasses, Cachorro e Gato, que herdam de Animal.

Cada classe tem um método fazer_som que imprime um som diferente.

Encapsulamento em classes Python

Encapsulamento é uma técnica que permite ocultar certos detalhes de implementação de uma classe, para que esses detalhes não sejam acessados diretamente por outras partes do código.

Em Python, o encapsulamento pode ser alcançado usando padrões de nomenclatura.

Por convenção, os atributos e métodos que devem ser considerados privados começam com um sublinhado (_).

Por exemplo:

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

    def get_nome(self):
        return self._nome

    def set_nome(self, nome):
        self._nome = nome

    def get_idade(self):
        return self._idade

    def set_idade(self, idade):
        if idade > 0:
            self._idade = idade
        else:
            print('Idade inválida')

Neste exemplo, os atributos nome e idade são definidos como privados, usando a convenção de nomeação com sublinhado.

Os métodos get_nome, set_nome, get_idade e set_idade são usados para acessar e modificar os atributos.

Obrigado por visitar o blog e por ler esse artigo, se tive qualquer dúvida, ideia ou sugestão, não hesite em entrar em contato pelo meu e-mail: lindomar@covildodev.com.br