1.1.5 Orientação a objetos

Orientação a objetos (OO) é uma forma conceitual de estruturar um programa: ao invés de definirmos variáveis e criarmos funções que as manipulam, definimos objetos que possuem dados próprios e ações associadas. O programa orientado a objetos é resultado da `colaboração' entre estes objetos.

Em Python, todos os dados podem ser considerados objetos: qualquer variável -- mesmo as dos tipos básicos e pré-definidos -- possui um valor e um conjunto de operações que pode ser realizado sobre este. Por exemplo, toda string em Python possui uma operação (ou método) chamada upper, que gera uma string nova com seu conteúdo em maiúsculas:

    >>> a = "Hello"
    >>> a.upper()
    'HELLO'

Como a maior parte das linguagens que são consideradas `orientadas a objeto', Python oferece um tipo especial para definir objetos customizados: a classe. Python suporta também funcionalidades comuns na orientação a objetos: herança, herança múltipla, polimorfismo, reflexão e introspecção.