Métodos especiais
Em Python, métodos começando e terminando com sublinha dobrado (
Métodos especiais podem fazer coisas maravilhosas ou criar comportamentos inesperados que zoarão com sua aplicação. São divididos em 12 tipos:
Recomendo fortemente a leitura do documento Data model, é essencial ao bom programador.
__*__
) são reservados e chamados especiais. Você não deve implementá-los se não souber o que está fazendo.Métodos especiais podem fazer coisas maravilhosas ou criar comportamentos inesperados que zoarão com sua aplicação. São divididos em 12 tipos:
- Personalização básica;
- Acesso personalizado a atributos;
- Criação personalizada de classes;
- Verificações personalizadas de instâncias e subclasses;
- Emulação de chamada;
- Emulação de recipiente;
- Emulação de tipos sequenciais;
- Emulação de tipos numéricos;
- Regras de coerção;
- Gerenciamento de contexto;
- Pesquisa de classes old-style;
- Pesquisa de classes new-style.
Recomendo fortemente a leitura do documento Data model, é essencial ao bom programador.
Métodos privados
Métodos privados são iniciados com sublinha dobrado, mas não terminados da mesma forma (
Um método privado não pode ser acessado de outro contexto a não ser da classe onde ele foi definido.
Isso não é de todo verdade… o que acontece de fato é que métodos privados são prefixados com um sublinha seguido do nome da classe, para evitar que sejam sobrescritos e prevenir acesso a partir de subclasses ou de fora do contexto da classe.
Por exemplo, no contexto da classe
Isso permite que você faça herança múltipla de classes que possuem o mesmo nome de método privado sem conflitos.
__*
).Um método privado não pode ser acessado de outro contexto a não ser da classe onde ele foi definido.
Isso não é de todo verdade… o que acontece de fato é que métodos privados são prefixados com um sublinha seguido do nome da classe, para evitar que sejam sobrescritos e prevenir acesso a partir de subclasses ou de fora do contexto da classe.
Por exemplo, no contexto da classe
Person
, todos os métodos iniciados com sublinha dobrado serão prefixados com _Person
. Assim, __fix_data
vira _Person__fix_data
.Isso permite que você faça herança múltipla de classes que possuem o mesmo nome de método privado sem conflitos.
Métodos protegidos
Há uma convenção em Python de que métodos com nome iniciado com um sublinha (
Nenhum tratamento é feito para evitar que sejam acessados de outros contextos, mas se espera que os programadores sigam a convenção.
A orientação em Python é que o programador não é nenhum bebezinho que precisa ser guiado e sabe o que está fazendo, portanto não aja como um bebê e respeite as convenções.
_*
) são protegidos, ou seja, só devem ser acessados no contexto da classe e de suas subclasses.Nenhum tratamento é feito para evitar que sejam acessados de outros contextos, mas se espera que os programadores sigam a convenção.
A orientação em Python é que o programador não é nenhum bebezinho que precisa ser guiado e sabe o que está fazendo, portanto não aja como um bebê e respeite as convenções.
Atributos e propriedades
Tudo o que foi dito sobre métodos especiais, privados e protegidos também vale para atributos e propriedades.
[]’s
Cacilhας, La Batalema