Métodos de classe

Introdução à programação orientada a objetos em Python

George Boorman

Curriculum Manager, DataCamp

Métodos

class Employee:
    def __init__(self, name, salary):
        self.name = name
        self.salary = salary

    def give_raise(self, amount):
        self.salary += amount


# Valores únicos por atributo emp_one = Employee("John", 40000)
emp_one.give_raise(5000) print(emp_one.salary)
45000









# Valores únicos por atributo emp_two = Employee("Jane", 60000)
emp_two.give_raise(5000) print(emp_two.salary)
65000
Introdução à programação orientada a objetos em Python

Métodos de classe

  • É possível definir métodos de classe
  • Eles devem ter escopo estreito, pois não usam dados da instância
class MyClass:
    # Use um decorador para declarar um método de classe
    @classmethod

# O argumento cls se refere à classe def my_awesome_method(cls, args...): # Faça algo aqui # Não pode usar atributos da instância
# Chame na classe, não no objeto MyClass.my_awesome_method(args...)
  • Como self, cls é convenção; qualquer nome funciona
Introdução à programação orientada a objetos em Python

Construtores alternativos

class Employee:
  def __init__(self, name, salary):
      self.name = name
      self.salary = salary

@classmethod def from_file(cls, filename): with open(filename, "r") as f: # Leia a primeira linha name = f.readline().strip() # Leia a segunda linha como inteiro salary = int(f.readline().strip())
return cls(name, salary)
  • Permitem construtores alternativos
  • Só pode haver um __init__()

 

  • Use métodos de classe para criar objetos
  • Use return para retornar um objeto
  • cls(...) chama __init__(...)
Introdução à programação orientada a objetos em Python

Construtores alternativos

class Employee:
  def __init__(self, name, salary):
      self.name = name
      self.salary = salary
  @classmethod
  def from_file(cls, filename):
      with open(filename, "r") as f:
          name = f.readline().strip()
          salary = int(f.readline().strip())
      return cls(name, salary)  

Employee.txt

Arquivo de texto contendo o nome John Smith e salário 40000

# Crie um funcionário sem chamar Employee()
emp = Employee.from_file("employee_data.txt")
print(emp.name)
John Smith
Introdução à programação orientada a objetos em Python

Quando usar métodos de classe

  • Construtores alternativos

  • Métodos que não precisam de atributos da instância

  • Restringir a uma única instância (objeto) da classe

    • Conexões com banco de dados
    • Configurações
Introdução à programação orientada a objetos em Python

Vamos praticar!

Introdução à programação orientada a objetos em Python

Preparing Video For Download...