Pular para o conteúdo

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'}