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 tipostr
print
é 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.