Que interessante! eu estou iniciando no estudo de python (atualmente utilizo apenas para resolver exercícios de algoritmos) e sempre me perguntei o que diabos eram esses metódos com dois underlines no inicio e ao fim. Esse teu post me deu o ânimo e a curiosidade para buscar além.
Valeu parça!
Que bom que gostou BrauUu!
Para esclarecer, quando usa-se dois underlines no início e fim, trata-se de métodos mágicos. No entanto, quando usa-se atributos com dois underlines no início, sem underlines no fim, trata-se de atributos/métodos privados, por exemplo __atributo_tal
, nesse caso, é uma convenção.
No caso de uso em classes em específico não é uma convenção exatamente. Por exemplo, supondo que tenha uma classe qualquer:
```
class Example:
def __init__(self, atributo_tal) -> None:
self.__atributo_tal = atributo_tal
```
E após isso você a instancie e tente acessar o atributo `__atributo_tal` da instância, como demonstrado a seguir:
```
example = Example("um valor qualquer")
print(example.__atributo_tal)
```
Fazendo isso você se depararia com um `AttributeError`, por causa do conceito de `name mangling` do python.
```
AttributeError: 'Example' object has no attribute '__atributo_tal'
```
Mas de fato existe uma convenção, e ela se dá de maneira parecida com o que mencionou acima. Ao invés de `__atributo_tal` seria `_atributo_tal`, com apenas um único _.