Classes em Python
Python é uma linguagem de programação orientada a objetos. Quase tudo em Python é um objeto, com suas propriedades e métodos, incluindo as classes.
Classes em Python são um bloco de construção fundamental da programação orientada a objetos (OOP). Na programação orientada a objetos, uma classe é um modelo para a criação de objetos. Ela define um conjunto de atributos e métodos que os objetos dessa classe terão. O uso de classes permite a reutilização do código para a criação de novos objetos com características específicas.
A intuição sobre o conceito de classes
Para entender melhor o conceito de classe, uma analogia é pensar uma classe como um projeto para criar um carro. Você pode usar o projeto para criar vários carros. Cada carro é um objeto ou instância derivada do projeto. Cada instância pode ter suas próprias propriedades, como cor, motor e design de interiores.
Em programação orientada a objetos, usamos o termo atributos para nos referirmos às propriedades ou dados associados a um objeto específico de uma determinada classe. Em Python, atributos são as variáveis definidas em uma classe para armazenar os dados necessários para ela funcionar. Cada instância de uma classe possui seu próprio conjunto de atributos.
As instâncias também podem ter comportamentos diferentes. No nosso exemplo, esses comportamentos podem ser trancar as portas automaticamente, fechar as janelas no desligamento, acender ou apagar os faróis e muito mais. Os diferentes comportamentos de uma classe em Python são chamados de métodos.
Por que as classes são importantes?
A utilização de classes tem várias razões, mas existem três principais que podemos entender deste o início:
Encapsulamento: as classes permitem encapsular dados e métodos que operam nesses dados em uma única unidade. Isso melhora a organização e a manutenção dos códigos.
Reutilização de código: ao criarmos classes, podemos escrever um código uma vez e reutilizá-lo para criar vários objetos.
Abstração: as classes permitem a abstração em códigos Python. Ou seja, ela possibilita expor apenas as informações necessárias sobre um objeto ou sistema enquanto oculta seus detalhes de implementação interna.
Como criar uma classe em Python
Em Python, uma classe é definida usando a palavra-chave ‘class’ seguida pelo nome da classe. Em seguida, definimos o corpo da classe. No corpo de uma classe, definimos atributos e métodos conforme necessário.
Os atributos são variáveis que contêm os dados da classe. Os métodos são funções que fornecem comportamento e normalmente atuam sobre os dados da classe. Veja um exemplo:
class Clientes:
def __init__(self, nome, email):
self.nome = nome
self.email = email
Neste trecho de código, definimos a classe Clientes usando a palavra-chave class. Dentro da classe, escrevemos um método chamado __init__().
O método __init__() tem um significado especial nas classes Python. Ele é usado para inicializar novos objetos. Usamos o __init__() para atribuir valores às propriedades do objeto ou outras operações que são necessárias quando o objeto está sendo criado. No exemplo acima, usamos o método __init__() para armazenar o nome e o e-mail de clientes.
O parâmetro self é uma referência à instância atual de uma classe. Ou seja, ele é usado para acessar variáveis que pertencem à classe.
Construtores e atributos
Para criar um objeto de uma classe Python, você deve chamar o construtor da classe com um par de parênteses e um conjunto de argumentos apropriados. Veja o exemplo abaixo:
cliente1 = Clientes('Ana', 'ana@gmail.com')
Neste caso, criamos um objeto com o construtor Clientes passando os atributos necessários (nome e e-mail). Um construtor é um método especial chamado quando um objeto é criado a partir de uma classe. Ele inicializa os atributos do objeto e define seus valores iniciais. Chamar o construtor de uma classe com valores de argumento diferentes permite criar objetos ou instâncias diferentes da classe de destino:
cliente1 = Clientes('Ana', 'ana@gmail.com')
cliente2 = Clientes('Bianca', 'bianca@gmail.com')
cliente3 = Clientes('Camila', 'camila@gmail.com')
No exemplo acima, cliente1, cliente2 e cliente3 são instâncias separadas da classe Clientes.
Métodos
Podemos pensar nos atributos de uma classe como os seus dados. Já os métodos são funções que pertencem a uma classe. Veja o exemplo abaixo:
class Clientes:
def __init__(self, nome, email):
self.nome = nome
self.email = email
def saudacao(self):
print(f'Olá {self.nome}')
cliente1 = Clientes('Ana', 'ana@gmail.com')
cliente1.saudacao() # resultado: Olá Ana
No exemplo, usamos um método para imprimir uma saudação a uma instância da classe. Ao passarmos o parâmetro self como argumento do método, ele consegue acessar todos os atributos da classe como o nome do cliente mostrado no exemplo.
Como acessar atributos e métodos
Como mostrado no exemplo anterior, em Python, podemos acessar os atributos e métodos de um objeto de uma classe usando a notação de ponto (dot) com o operador de ponto. Portanto, podemos acessar o nome ou e-mail de uma instância da classe Clientes de maneira equivalente a que utilizamos para acessar o método do exemplo acima:
class Clientes:
def __init__(self, nome, email):
self.nome = nome
self.email = email
def saudacao(self):
print(f'Olá {self.nome}')
cliente2 = Clientes('Bianca', 'bianca@gmail.com')
print(cliente2.nome) # Bianca
print(cliente2.email) # bianca@gmail.com
Neste exemplo, após definirmos uma instância da classe Clientes, acessamos seus atributos (nome e e-mail) com a notação de ponto. Outro caso ilustrativo é mostrado abaixo:
class MeuSaldo:
def __init__(self, depositos, contas):
self.depositos = depositos
self.contas = contas
def calcula_saldo(self):
return sum(self.depositos) - sum(self.contas)
saldo = MeuSaldo([1000, 200], [600, 100])
print(saldo.calcula_saldo()) # resultado: 500
Neste exemplo, criamos uma classe para calcular saldos. Ela recebe como argumentos uma lista de depósitos e uma lista de contas. Ela tem apenas um método chamado calcula_saldo(). Após inicializarmos a classe com valores ilustrativos de depósitos e contas, usamos o método definido para calcular o saldo atual.
Veja também:
Concatenações com join() para strings em Python
O que é operador ternário em Python?
F-strings em Strings Multilinhas
Decodificação de strings em Python com decode()
Métodos para Manipular Strings em Python
Módulo Getpass para Prompts de Senhas
Aprenda a comparar textos com Python com Difflib
Módulo textwrap para formatação de textos
Manipulação de arquivos com Python
os.environ: gerenciamento de variáveis de ambiente com Python
Métodos Avançados Do Módulo os
Encontrou algum erro ou quer fazer uma sugestão? Por favor, entre em contato usando nosso formulário de contatos.