Uma introdução a Python orientado a objetos: Construção de classes

Comentei no Twitter do Estatsite (sigam lá @EstatSite) que estava estudando Python orientado a objetos. É uma forma ainda complicada de pensar o código para mim, mas vejo que é muito útil, principalmente pela forma com que muitos sistemas e modelos são construídos hoje em dia. Como o blog é para compartilhar o que aprendo, aqui vai uma introdução a esse estilo de programação.

O que é Python orientado a objetos?

A definição do Wikipedia é bem precisa para este tema, segundo o que consta no site, a programação orientada a objetos – OOP, em inglês – é “um paradigma de programação baseado no conceito de “objetos”, que podem conter dados na forma de campos, também conhecidos como atributos, e códigos, na forma de procedimentos, também conhecidos como métodos.”

Em outras palavras, trabalhamos com objetos quando pensamos nesta forma de programar. E um objeto é exatamente o que pensamos na vida real: qualquer coisa. Um objeto pode representar uma pessoa com características como idade, nome e ações como andar. Pode ser um animal, uma casa, uma loja, qualquer coisa, que pode ter características/propriedades e comportamentos.

Como você deve ter notado, essa abordagem modela coisas do mundo real e suas relações. É um pouco diferente do que você costuma ver aqui no blog, que é a programação procedural. Neste outro caso, estruturamos nosso código, nosso programa, como se fosse uma receita de bolo, que passa por várias etapas em sequência, afim de concluir certa tarefa.

O que é uma classe?

Classes são estruturas definidas pelo usuário que permite que se agrupe dados e funcionalidades. Quando criamos uma classe, criamos um novo tipo de objeto, onde agrupamos objetos semelhantes. Você pode criar uma classe chamada professores, onde os objetos possuem informações como salários, horas trabalhadas, formação acadêmica e ações como lecionar. Objetos que estão na classe professores serão diferentes dos objetos da classe carros, que possuem propriedades como número de portas, velocidade média, dentre outras coisas.

Como criar uma classe no Python?

Criação de classe em Python é bem simples, você deve começar com class, seguido do nome da classe, dois pontos e na linha de baixo começar a definir a classe. Veja um exemplo de classe bem simples que não faz nada, apenas para você entender a estrutura:

class FazNada:
    """ classe que nao faz nada """
    pass

Tome cuidado com a tabulação. Estes posts acabam não tendo o espaçamento correto do Python. Sendo assim, recomendo que você mesmo escreva a classe, dando enter e permitindo que o próprio Python defina o espaçamento para você.

Note que inclui uma breve descrição do que faz a classe entre três aspas duplas de cada lado. É apenas uma boa prática, mas não um requisito.

Agora, podemos criar objetos dentro dessa classe. Vejam dois objetos da classe FazNada:

objeto1 = FazNada()
objeto2 = FazNada()

Obviamente, esses dois objetos em nada nos são úteis, pois a classe não faz nada. Mas servem para você entender a sintaxe. Se fosse uma classe chamada SeresHumanos, você poderia criar o objeto:

Maria = SeresHumanos()

Vejamos uma outra classe também bem simples:

# Cria classe
class QuaseFazNada:
    """ classe que quase nao faz nada """
    x = 10

Essa outra classe também é muito simples, porém, diferente da anterior, ela faz alguma coisa. Todos os objetos desta classe terão a propriedade x que terá valor 10. Vejamos um exemplo:

objeto1 = QuaseFazNada()
objeto1.x

Novamente, estamos tratando de uma classe bem simples com somente um atributo, que se chama x e tem sempre o valor igual a 10. Como falei tantas vezes sobre uma classe para definir pessoas, vamos tentar algo um pouquinho mais robusto:

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

Mais uma fez reforço o cuidado com a tabulação, o espaçamento. Bom, falando da classe, temos duas novidades aí: __init__ e self. O primeiro é um método que normalmente todas as classes terão, pois é ele quem atribui valores aos elementos da classe quando ela é declarada. O __init__() possui uma série de “instruções” que são executadas no momento em que um objeto da classe é criado. No nosso exemplo, ele inicializa atribui os valores de nome, idade e altura para o objeto.

Já o self, que também será visto constantemente – dessa vez sempre que chamarmos um método dentro da classe -, representa a instância da classe e serve para acessar os atributos e métodos da classe.

Veja a criação de dois objetos da classe Pessoas:

obj1 = Pessoas(Marcos, 30, 1.77)
obj2 = Pessoas(Maria, 30, 1.75)

Você pode acessar os atributos desses objetos:

Essa é a essência da programação em objetos no Python. Claro, apenas uma breve introdução, apenas para você não se espantar quando ver este tipo de programação na sua frente. Em breve, volto com mais conteúdo deste tipo.

Gostou do conteúdo? Se inscreva para receber as novidades! Deixe seu e-mail em INSCREVA-SE na barra à direita, logo abaixo de pesquisar. E, por favor, não deixe de comentar, dar seu feedback e compartilhar com seus amigos. De verdade, isso faz toda a diferença. Você também pode acompanhar mais do meu trabalho seguindo a conta de Twitter @EstatSite ou por alguma das redes que você encontra em Sobre o Estatsite / Contato.

Bons estudos!

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *