Classes e Objetos
Definição
- Python é uma linguagem de programação orientada a objetos.
- Quase tudo em Python é um objeto com atributos (dados e funções).
- Uma classe é como um construtor de objetos. Para criar uma classe, deve-se usar a palavra-chave class.
- Para criar um objeto, basta chamar a classe.
No exemplo abaixo, o programa tem a classe Alunos que possui três atributos (nome, matricula e mostraNome()). O objeto aluno é uma instância da classe Alunos. Observe que os atributos são acessados usando o nome do objeto.
class Alunos: nome = "Maria Flor" matricula = "20181210080" def mostraNome(self): print("Nome =", self.nome) aluno = Alunos() print("Nome =", aluno.nome, ", matrícula =", aluno.matricula) aluno.mostraNome()
A saída do programa é:
Nome = Maria Flor , matrícula = 20181210080 Nome = Maria Flor
Exemplos
- Exemplo: Todas as classes tem a função __init__() que é executada quando um objeto da classe é instanciado. Essa função é usada para assinalar valores para as propriedades do objeto ou para executar operações necessárias na criação do objeto. O parâmetro self é uma referência à instância corrente da classe. No exemplo abaixo, a classe Alunos redefine a função __init__(), ou seja, não usa a função padrão do Python.
class Alunos: def __init__(self, nome, matricula): self.nome = nome self.matricula = matricula aluno1 = Alunos("Maria Flor", "20181210080") print("*** Aluno1: Nome =", aluno1.nome, ", matrícula =", aluno1.matricula) aluno2 = Alunos("João Pedro", "20181210093") print("*** Aluno2: Nome =", aluno2.nome, ", matrícula =", aluno2.matricula)
O programa possui dois objetos da classe Alunos: aluno1 e aluno2. A resposta do programa é mostrada abaixo.
*** Aluno1: Nome = Maria Flor , matrícula = 20181210080 *** Aluno2: Nome = João Pedro , matrícula = 20181210093
- Exemplo: O atributo __doc__ fornece documentação do objeto (definida no início da classe).
class Aluno: "Esta é a classe Aluno" nome = "Maria Flor" print(Aluno.__doc__) print("Nome =", Aluno.nome)
A resposta do programa é:
Esta é a classe Aluno Nome = Maria Flor
- Exemplo: É possível alterar atributos dos objetos. No exemplo abaixo, o atributo nome é modificado depois que o objeto aluno foi criado.
class Alunos: def __init__(self, nome, matricula): self.nome = nome self.matricula = matricula aluno = Alunos("Maria", "20181210080") print("*** Aluno: Nome =", aluno.nome, ", matrícula =", aluno.matricula) aluno.nome = "Maria Flor" print("*** Aluno: Nome =", aluno.nome, ", matrícula =", aluno.matricula)
O resultado da execução do programa é:
*** Aluno: Nome = Maria , matrícula = 20181210080 *** Aluno: Nome = Maria Flor , matrícula = 20181210080
- Exemplo: O comando del permite deletar atributos de um objeto (pode ser usado também para deletar um objeto). No exemplo abaixo, o atributo matricula é deletado.
class Alunos: def __init__(self, nome, matricula): self.nome = nome self.matricula = matricula aluno = Alunos("Maria", "20181210080") print("Atributos antes da deleção: ", vars(aluno)) del aluno.matricula print("Atributos depois da deleção:", vars(aluno))
A resposta do programa é:
Atributos antes da deleção: {'nome': 'Maria', 'matricula': '20181210080'} Atributos depois da deleção: {'nome': 'Maria'}
- Exemplo: A herança em Python permite definir uma classe que herda todos os atributos de uma outra classe. A classe pai (parent) é a classe base da herança. A Classe filho (child) é a classe derivada que herda atributos de outra classe. O exemplo a seguir mostra a classe-pai Alunos e a classe-filho BSI. A classe-pai Alunos possui três atributos: nome, matrícula e mostra_nome(). A classe filho BSI possui, além dos atributos da classe pai, os atributos curso e mostra_matricula().
class Alunos: def __init__(self, nome, matricula): self.nome = nome self.matricula = matricula def mostra_nome(self): print("Nome =", self.nome) class BSI(Alunos): def __init__(self, nome, matricula): Alunos.__init__(self, nome, matricula) self.curso = "BSI" def mostra_matricula(self): print("matrícula =", self.matricula) aluno = BSI("Maria", "20181210010") aluno.mostra_nome() aluno.mostra_matricula() print("Atributos do objeto aluno =", vars(aluno))
O programa apresenta a seguinte resposta:
Nome = Maria matrícula = 20181210010 Atributos do objeto aluno = {'nome': 'Maria', 'matricula': '20181210010', 'curso': 'BSI'}