Chapter 1 - The Python Data Model
Last updated
Was this helpful?
Last updated
Was this helpful?
Dunder methods: special methods such as .__getitem__
ou .__dict__
o uso dos atributos .__getitem__
e .__len__
torna essa classe uma sequência que pode ser iterable. Então, podemos criar laços, sortear um item da instância classe etc.
.__getitem__
In Python’s data model, when you write foo[i]
, foo.__getitem__(i)
is called.
Just because a method implements .__getitem__
, it is also iterable
in
Uses the method .__contains__
No geral, não precisamos chamar diretamente os métodos especiais - quem faz isso é o interpretador python.
Um dos únicos métodos que usamos diretamente é o .__init__
- para invocar o inicializador da superclasse - é um construtor de objetos.
Java
Python
Em java, não é possÃvel fazer isso. Então, temos que criar métodos especÃficos da classe para realizar essas operações (ex.:
sum
)
Vector
Nesse caso, implementamos operadores aritméticos para o formato de vetor e mostramos qual deve ser o comportamento se for chamada uma multiplicação ou adição de vetores.
__string__
x __repr__
* Dar preferência à implementação do __repr__
- fallback
Diferentes formas de chamar o mesmo método.
__bool__
and __len__
O tipo bool em python aceita qualquer tipo de objeto através de bool(x)
que chama x.__bool__()
.
Se o bool não estiver implementado:
Python invoca x.__len__()
(se retornar zero, será false)
No method is called for the built-in objects of CPython: the length is simply read from a field in a C struct.
O serve para exibir o objeto para usuário final, usada pelo comando print e pela função str.
O serve para exibir o objeto para o programador, usada pelo console do Python e pela funçao repr.