Os métodos podem ser construtores ou destrutores. O método construtor, cria o estado inicial de um objeto com um conjunto mínimo de parâmetros necessário para existir. O método __init__ (abreviação da palavra em inglês para “inicialização”) é um método especial, invocado quando um objeto é instanciado. O método __str__ é um método especial, como __init__, porém ele é usado para retornar uma representação de string de um objeto, ou seja, ao exibir um objeto com print, será invocado o método __str__ com as informações que foram parametrizadas.
O método destrutor ( __del__ ) é chamado sempre que um objeto não é mais utilizado, serve para limpar a memória do python, para não consumir espaço desnecessário, deixando o programa mais "leve". Existem outros métodos.
Sobrecarga
A Sobrecarga de métodos (overload) usa o número ou tipo de argumento para distinguir entre funções ou operadores com nomes idênticos. Ademais, é um conceito do polimorfismo que consiste basicamente em criar variações de um mesmo método, ou seja, a criação de dois ou mais métodos com nomes totalmente iguais em uma classe. A Sobrecarga permite que utilizemos o mesmo nome em mais de um método, contanto que suas listas de argumentos sejam diferentes.
Herança
A herança nos permite definir várias subclasses a partir de uma classe já definida. Você pode pensar nisso como o conceito de herança genética da vida real. As crianças (subclasse) são o resultado da herança entre dois pais (superclasses). Eles herdam todas as características físicas (atributos) e alguns comportamentos (métodos) comuns.