• Python
  • 12. Python intermediário
  • Classes

Classes

Implementando métodos

Vamos ver um exemplo de uma função definida dentro da classe (também chamada de método):

class Point:
    def __init__(self, x_coord, y_coord):
        self.x = x_coord
        self.y = y_coord

    def distance_to(self, other_point):
        dx = other_point.x - self.x
        dy = other_point.y - self.y
        return ((dx**2) + (dy**2)) ** 0.5

Exercício 1

Considere o código acima. Agora definimos um método para a classe Point, chamado distance_to.

O que você acha que o método distance_to faz.

Resposta

O método distance_to recebe dois pontos como argumento. O primeiro ponto é o self e o segundo argumento é other_point.

Exercício 2

Atualize o classes.py para a nova versão da nossa classe Point.

Depois disso, modifique o código do exemplo.py para que ele crie dois pontos p1 e p2 e depois utilize o nosso novo método distance_to:

p1 = Point(4, 1)
p2 = Point(7, 5)
d = p1.distance_to(p2)
print(f'A distância de ({p1.x}, {p1.y}) a ({p2.x}, {p2.y}) é {d}')

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

Resposta

Note que a forma como chamamos o método distance_to é um pouco diferente de como chamamos funções normalmente. Estamos chamando o método distance_to associado à variável p1 com o argumento p2.

Exercício 3

Considere o código atual da nossa classe Point:

1
2
3
4
5
6
7
8
9
class Point:
    def __init__(self, x_coord, y_coord):
        self.x = x_coord
        self.y = y_coord

    def distance_to(self, other_point):
        dx = other_point.x - self.x
        dy = other_point.y - self.y
        return ((dx**2) + (dy**2)) ** 0.5

Ao executar a linha 7, a partir da chamada do exemplo do exercício anterior (d = p1.distance_to(p2)). Quais são os valores de other_point.x e self.x respectivamente.

Resposta

Os valores para other_point.x e self.x são 7, 4.

Valores para other_point.x e self.x

Veja o teste de mesa abaixo, que simula o código do exercício anterior:

Teste de mesa: distance_to

Considere o comando na penúltima linha: d = p1.distance_to(p2). Ele segue uma estrutura muito parecida com o que já fazíamos com strings, por exemplo:

s = 'Insper'
t = s.replace('Ins', 'Su')
print(t)

Provavelmente ainda não está muito claro qual é a vantagem de usarmos classes. Vamos praticar resolvendo alguns exercícios. No handout de Pygame veremos alguns exemplos mais úteis do uso de classes.

Uma sugestão de sequência de exercícios para praticar:

Exercício 4

Resolva o exercício Classe retângulo.

Acessar exercício

Exercício 5

Resolva o exercício Carrinho de compras.

Acessar exercício

Exercício 6

Resolva o exercício Classe Foguete.

Acessar exercício