Programação Orientada a objeto
Programação orientada a objetos representa o mundo real. Na programação orientada a objetos, implementa-se um conjunto de classes que definem os objetos presentes no sistema de software.
Classes
Em orientação a objetos, uma classe é uma estrutura que abstrai um conjunto de objetos com características similares. Em comparação com outras linguagens de programação, mecanismo de classe do Python adiciona as classes no mínimo com uma nova sintaxe e semântica. É uma mistura de mecanismos equivalentes encontrados em C + + e Modula-3. Classes Python fornecem todas as características padrão de Programação Orientada a Objetos: o mecanismo de herança de classe permite múltiplas classes base, uma classe derivada pode substituir os métodos de sua classe base ou classes, e um método pode chamar o método de uma classe base com o mesmo nome . Os objetos podem conter quantidades arbitrárias e tipos de dados. Como é o caso para os módulos, as classes participam da natureza dinâmica do Python: eles são criados em tempo de execução, e pode ser modificado ainda mais após a criação.
As definições de classe, como definições de funções (declarações def) devem ser executados antes que tenham qualquer efeito. (Você pode conseguir colocar uma definição de classe em um galho de uma instrução if ou dentro de uma função.)
Na prática, os comandos dentro de uma definição de classe será geralmente as definições de função, mas outras declarações são permitidas, e às vezes útil – nós vamos voltar a isso mais tarde. As definições de função dentro de uma classe normalmente têm uma forma peculiar de lista de argumentos, ditada pelas convenções de chamada para métodos – de novo, isso é explicado mais tarde.
Objeto Classe
Objetos de Classe suportam dois tipos de operações: referências a atributos e instanciação.
Atributo referências usam a sintaxe padrão utilizado para todas as referências a atributos em Python: obj.name. Nomes de atributos válidos são todos os nomes que estavam no namespace da classe quando o objeto classe foi criado. Assim, se a definição de classe ficou assim:
class MinhaClasse: """Um simples exemplo de classe""" i = 12345 def f(self): return 'Olá Mundo'
Então MinhaClasse.i e MinhaClasse.f são referências a atributos válidos, retornando um inteiro e um objeto função, respectivamente. Atributos de classe também pode ser atribuído, de modo que você pode alterar o valor de MinhaClasse.i por atribuição. __doc__ também é um atributo válido, que retorna a docstring pertencente à classe: “Um simples exemplo de classe”.
Instanciação de classe usa a notação de função. Apenas finja que o objeto classe é uma função sem parâmetros que retorna uma nova instância da classe. Por exemplo:
x = MyClass()
cria uma nova instância da classe e atribui esse objeto para a variável local x.
A operação de instanciação (“chama” um objeto de classe) cria um objeto vazio. Muitas classes criam objetos com instâncias customizadas para um estado inicial específico. Portanto, uma classe pode definir um método especial chamado __ init__ (), assim:
class Complex: def __init__(self, realpart, imagpart): self.r = realpart self.i = imagpart x = Complex(3.0, -4.5) x.r, x.i
Exemplo de Classe
#!/usr/bin/env python # -*- coding: latin-1 -*- # Desenvolvimento Aberto # Empregados.py # Importa OS import os # Limpa a tela os.system("clear") # Classe comum para os empregados class Empregados: empCount = 0 def __init__(self, nome, salario): self.nome = nome self.salario = salario Empregados.empCount += 1 def displayCount(self): print "Total de Empregados %d" % Empregado.empCount def displayEmpregados(self): print "Nome : ", self.nome, ", Salario: ", self.salario # Cria o primeiro objeto da classe empregados emp1 = Empregados("Patricia", 2000) # Cria o segundo objeto da classe empregados emp2 = Empregados("Augusto", 5000) # Cria o terceiro objeto da classe empregados emp3 = Empregados("Marcia",3000) # Mostra os empregados emp1.displayEmpregados() emp2.displayEmpregados() emp3.displayEmpregados() # Imprime total de empregados print "" print "Total de empregados %d" % Empregados.empCount