Classes

Uma classe é uma estrutura que representa um objeto e um conjunto de operações que podem ser executadas sobre o objeto.

Objetos possuem um tipo, uma representação interna (campos), e provêm uma interface (métodos). As informações (campos) de um objeto são chamadas de atributos do objeto, e as operações realizadas sobre o objeto são chamadas métodos do objeto/classe.

Em linhas gerais, um método é uma função que funciona somente dentro da classe, isto é, somente quando invocado por objetos da classe, seguindo uma sintaxe específica: objeto.metodo. Além disso, ao invocar um método, Python sempre passa como primeiro parâmetro para o método o objeto que está invocando o método. Para indicar isso, a convenção é declarar self como primeiro parâmetro de todo método.

Exemplo de classe

O exemplo abaixo cria uma classe para representar um vetor em Python. Esse exemplo foi tirado do livro Python Fluente, e seu código-fonte pode ser encontrado no repositório do livro no github.

from math import hypot

class Vector:
    """Representa um vetor em Python."""
    def __init__(self, x=0, y=0):
        self.x = x
        self.y = y

    def __str__(self):
        return 'Vector(%r, %r)' % (self.x, self.y)

    def __abs__(self):
        return hypot(self.x, self.y)

    def __bool__(self):
        return bool(abs(self))

    def __add__(self, other):
        x = self.x + other.x
        y = self.y + other.y
        return Vector(x, y)

    def mul(self, scalar):
        return Vector(self.x * scalar, self.y * scalar)

Pela definição da classe acima, notamos que:

Para criar um novo objeto da classe Vector, podemos fazer como abaixo:

v = Vector(10, 20) # O método __init__ será chamado.
print(v)           # O método __str__ será chamado.
Vector(10, 20)

Chamando um método da classe:

print(v.mul(5))
Vector(50, 100)

Pelos exemplos acima, vemos que o uso de uma classe em Python envolve:

Para mais detalhes sobre o funcionamento de classes em Python, veja o tutorial Python.


Leitura Complementar