Anatomia da classe: atributos e métodos

Programação orientada a objetos em Python

Alex Yarosh

Content Quality Analyst @ DataCamp

Uma classe básica

class Customer:

# código para a classe vai aqui
pass
  • class <name>: inicia uma definição de classe
  • código dentro da class é indentado
  • use pass para criar uma classe "vazia"
c1 = Customer()
c2 = Customer()
  • use ClassName() para criar um objeto da classe ClassName
Programação orientada a objetos em Python

Adicionar métodos a uma classe

class Customer:  

    def identify(self, name):   
      print("Eu sou o Cliente " + name)
  • definição de método = definição de função dentro da classe
  • use self como o 1º argumento na definição do método
cust = Customer()
cust.identify("Laura")
Eu sou o Cliente Laura
  • ignore self ao chamar método em um objeto
Programação orientada a objetos em Python
class Customer:  

    def identify(self, name):   
      print("Eu sou o Cliente " + name)

cust = Customer()
cust.identify("Laura")

O que é self?

  • classes são modelos, como referenciar dados de um objeto específico?
  • self é um substituto para um objeto específico usado na definição da classe
  • deve ser o primeiro argumento de qualquer método
  • Python cuida do self quando o método é chamado de um objeto:

cust.identify("Laura") será interpretado como Customer.identify(cust, "Laura")

Programação orientada a objetos em Python

Precisamos de atributos

  • Encapsulamento: agrupar dados com métodos que operam sobre eles
  • Ex.: o nome do Customer deve ser um atributo

  $$\text{\Large{Atributos são criados por atribuição (=) em métodos}}$$

Programação orientada a objetos em Python

Adicionar um atributo à classe

class Customer:  
    # define o atributo nome de um objeto para new_name
    def set_name(self, new_name):

# Cria um atributo atribuindo um valor self.name = new_name # <-- criará .name quando set_name for chamado
cust = Customer()                   # <--.name ainda não existe aqui

cust.set_name("Lara de Silva") # <--.name é criado e definido como "Lara de Silva"
print(cust.name) # <--.name pode ser usado
Lara de Silva
Programação orientada a objetos em Python

Versão antiga

class Customer:  



    # Usando um parâmetro
    def identify(self, name):   
      print("Eu sou o Cliente" + name)
cust = Customer()

cust.identify("Eris Odoro")
Eu sou o Cliente Eris Odoro

Nova versão

class Customer:  
   def set_name(self, new_name): 
      self.name = new_name

    # Usando .name do próprio objeto
    def identify(self):     
      print("Eu sou o Cliente" + self.name)
cust = Customer()
cust.set_name("Rashid Volkov")
cust.identify()
Eu sou o Cliente Rashid Volkov
Programação orientada a objetos em Python

Vamos praticar!

Programação orientada a objetos em Python

Preparing Video For Download...