Python suporta programação orientada a objetos (POO). Os objetivos da POO são:
- de organizar o código;
- para re-utilização de código em contextos semelhantes.
Aqui está um pequeno exemplo: crie uma classe Estudante, que é um objeto reunindo várias funções personalizadas (métodos) e variáveis (atributos):
[pastacode lang=”python” message=”” highlight=”” provider=”manual”]
class Estudante(object):
def __init__(self, nome):
self.nome = nome
def set_idade(self, idade):
self.idade = idade
def set_curso(self, curso):
self.curso = curso
ana = Estudante('ana')
ana.set_idade(21)
ana.set_curso('Civil')
[/pastacode]
No exemplo anterior, a classe de Estudante tem métodos __ init__, defina_idade e defina_curso. Seus atributos são nome, idade e curso. Podemos chamar esses métodos e atributos com a seguinte notação: classinstance.method ou classinstance.attribute. O construtor __ init__ é um método especial que chamamos com: MyClass (parâmetros de inicialização se for o caso). Agora, suponha que deseja criar uma nova classe EstudanteMestrado com os mesmos métodos e atributos como o anterior, mas com um atributo de defesa adicional. Nós não iremos copiar a classe anterior, mas herdar dela:
[pastacode lang=”python” message=”” highlight=”” provider=”manual”]
class EstudanteMestrado(Estudante):
defesa = 'dezembro'
jaime = EstudanteMestrado('jaime')
jaime.defesa #console interativo
jaime.defina_idade(23)
jaime.idade #console interativo
[/pastacode]
A classe EstudanteMestrado herda dos atributos e métodos da classe Estudante. Graças a classes e a programação orientada a objeto, podemos organizar o código com classes diferentes, correspondentes a diferentes objetos que encontramos (uma classe de Experimento, uma classe de imagem, uma classe de fluxo, etc), com seus próprios métodos e atributos. Então, podemos usar a herança para considerar variações em torno de uma classe base e reutilização de código. Ex: de uma classe base de fluxo, podemos criar derivadas como FluxoStokes, FluxoTurbulento, FluxoPotencial, etc.