• Python
  • 12. Python intermediário
  • Classes

Classes

Criando nossa primeira classe

Na disciplina Developer Life não entraremos em detalhes sobre o que são classes, nem como montar boas classes. Queremos apenas saber o mínimo para poder utilizá-las1. Você aprenderá mais sobre essa outra forma de programar no próximo semestre.

Neste primeiro momento você pode entender uma classe como um tipo de dados do Python. Na verdade, já trabalhamos com algumas classes, por mais que não tenhamos chamado-as assim: listas, strings e dicionários são algumas das classes disponíveis na linguagem. A diferença é que agora vamos criar novas classes (ou tipos) no Python.

Outra forma de entender uma classe é como uma espécie de dicionário que também guarda funções, que conseguem acessar os valores desse "dicionário". É uma maneira de unir dados e funcionalidade relacionada a esses dados no mesmo lugar.

A ideia é semelhante ao que fazemos com um def. Primeiro definimos a classe e depois usamos quando for necessário. Suponha, por exemplo, que queremos criar um novo tipo que represente um ponto com coordenadas x e y. Ele poderia ser feito da seguinte maneira (o exemplo completo está no arquivo teste_ponto.py):

class Point:
    def __init__(self):
        self.x = 0
        self.y = 0

O trecho de código class Point: define uma classe Point que possui coordenadas x e y ambas iguais a zero.

Note que apenas definimos esse novo tipo, mas ainda não usamos. A partir desse momento o Python sabe o que é uma lista, o que é uma string e agora também sabe o que é um Point. Vamos utilizar esse nosso novo tipo!

Com calma 😌

Não explicamos os novos trechos de código: def __init__(self):, self.x e self.y. Provavelmente não está muito claro como eles funcionam, mas voltaremos a eles mais para frente.

Testando nossa primeira classe#

Vamos utilizar o exercício Minha primeira classe para seguir o handout a partir daqui.

Exercício 1

Abra o exercício Minha primeira classe antes de seguir o handout.

Acessar exercício

Exercício 2

Vamos começar escrevendo código em dois arquivos:

  • No arquivo classes.py, escreva o código da classe Point;
  • No arquivo exemplo.py, escreva o código abaixo:
ponto = Point()
print(f'O ponto está nas coordenadas x={ponto.x} e y={ponto.y}')

Ao testar o código acima, o que foi impresso no terminal?

Resposta

O x e y são "variáveis" (chamamos de atributos) que estão ligadas àquele ponto específico.

Exercício 3

Podemos inclusive mudar o valor do ponto:

ponto = Point()
ponto.y = 5
ponto.x = 2
x = 3
y = 7
print(f'O ponto está nas coordenadas x={ponto.x} e y={ponto.y}')
Ao testar o código acima, no arquivo exemplo.py, o que foi impresso no terminal?

Resposta

As atribuições dos valores 3 e 7 às variáveis x e y antes do print não tem nenhum efeito prático. Nós estamos imprimindo o valor do atributo x associado à variável ponto e não a variável x do programa.

Vamos continuar modificando nossa classe Point para entender melhor o que está acontecendo.


  1. Classes fazem parte de um paradigma de programação chamado Programação Orientada a Objetos (POO), que teve um impacto significativo na indústria de software nos anos 80/90 e que dura até os dias de hoje. Neste semestre, vamos focar apenas na ponta do iceberg. Por esse motivo, dizemos que vamos trabalhar com classes e não necessariamente programação orientada a objetos