Programadores de POO concentram-se em criar seus próprios tipos de dados definidos pelo usuário, chamados de classes. Os substantivos numa especificação de sistema ajudam o programador de POO a determinar o conjunto de classes que será usado para criar os objetos que trabalharão juntos para implementar o sistema.
Classes simplificam a programação porque os clientes necessitam estar preocupados só com as operações encapsuladas ou embutidas no objeto — a interface de objeto.
A palavra-chave class inicia uma definição de classe. A palavra-chave é seguida pelo nome da classe, que é seguido por um sinal de dois pontos (:). A linha que contém a palavra-chave class e o nome de classe é chamada de cabeçalho (header) da classe.
O corpo da classe é um bloco de código endentado que contém métodos e atributos que pertencem à classe.
Uma string de documentação opcional da classe descreve a classe. Se uma classe contém uma strings de documentação, a strings deve aparecer na linha ou linhas seguindo o cabeçalho da classe.
O método init é o método construtor de uma classe. Um construtor é um método especial que executa cada vez um objeto de uma classe é criado. O construtor inicia os atributos do objeto e retorna None.
Todos os métodos, incluindo construtores, devem especificar ao menos um parâmetro — a referência de objeto. Este parâmetro representa o objeto da classe para o qual o método é chamado. Os métodos devem usar a referência de objeto para acessar atributos e outros métodos que pertencem à classe. Por convenção, o argumento de referência de objeto é chamado self. Cada objeto tem o próprio namespace que contém os métodos do objeto e atributos. O construtor da classe começa com um objeto vazio (self) e adiciona atributos ao namespace do objeto.