Python e objetos
Um programa simples
Vamos começar com um dos programas mais simples em Python:
mensagem = "Alô"
print(mensagem)
Nesse programa…
mensagemé uma variável"Alô"é um objeto do tipostrprinté uma função
Objetos
Em Python, variáveis são referências para objetos. Isso significa que qualquer coisa que possa ser atribuída a uma variável é um objeto.
Eis alguns exemplos de objetos em Python:
- A string
"Alô" - O número
3.14 - A lista
[1, 2, 3](os elementos de uma lista também são objetos)
Variáveis referenciam objetos
Considere o seguinte programa:
x = 1
y = x
As variáveis e objetos podem ser assim representados:
Nessa situação, considere agora a execução do seguinte código:
y = y + 1
A expressão y + 1 resulta em um outro objeto, o número 2, e y passa a referenciar esse objeto. A variável x continua referenciando o objeto 1:
Dica: você pode visualizar as variáveis e objetos de qualquer programa Python no site Python Tutor. Para uma visualização mais próxima desta que apresentamos aqui, escolha a opção “render all objects on the heap” ao editar o código.
Todo objeto é de um tipo
O tipo de um objeto determina…
- os valores que ele pode assumir
- as operações que podem ser realizadas sobre ele
Por exemplo, o tipo int admite valores como 3 e -8, mas não valores como 4.5 ou "livro".
Além disso, é possível realizar uma subtração entre dois objetos do tipo int usando o operador -, mas não é possível subtrair dois objetos do tipo str (strings).
type()
Em Python, podemos determinar o tipo de um objeto através da função type():
Note que
type(3.14 * 2)significa “o tipo do objeto6.28”type(idade)significa “o tipo do objeto referenciado pela variávelidade”
dir()
Para ver quais operações podem ser realizadas sobre um objeto, use a função dir():
Operações iniciadas por __ são especiais; por exemplo:
__add__significa adição usando o operador+__gt__significa comparação com o operador>(em inglês, greater than).
Você pode verificar que objetos do tipo int possuem a operação __sub__ (subtração com -), enquanto objetos do tipo list não possuem essa operação.