Menu
Coddy logo textTech

Decorador de Método de Classe

Parte da seção Object Oriented Programming do Journey de Python da Coddy — lição 12 de 64.

O decorador @classmethod cria métodos que recebem a própria classe como o primeiro parâmetro (cls) em vez de uma instância (self).

Aqui está um exemplo de uma classe com métodos de classe:

class Student:
    school_name = "Python Academy"
    student_count = 0
    
    def __init__(self, name):
        self.name = name
        Student.student_count += 1
    
    @classmethod
    def get_school_info(cls):
        return f"School: {cls.school_name}, Students: {cls.student_count}"
    
    @classmethod
    def create_guest_student(cls):
        return cls("Guest")

Chame métodos de classe usando o nome da classe:

info = Student.get_school_info()
print(info)

Crie alguns estudantes:

alice = Student("Alice")
bob = Student("Bob")

updated_info = Student.get_school_info()
print(updated_info)

Use métodos de classe como construtores alternativos:

guest = Student.create_guest_student()
print(guest.name)
print(Student.get_school_info())

Saída:

School: Python Academy, Students: 0
School: Python Academy, Students: 2
Guest
School: Python Academy, Students: 3

Métodos de classe também podem ser chamados a partir de instâncias:

alice = Student("Alice")
info_from_instance = alice.get_school_info()
print(info_from_instance)

Saída:

School: Python Academy, Students: 1

Ponto Chave: Use @classmethod quando você precisar acessar atributos da classe ou criar formas alternativas de construir objetos. O primeiro parâmetro é cls (a própria classe), não self.

Folha de consulta

O decorador @classmethod cria métodos que recebem a própria classe como o primeiro parâmetro (cls) em vez de uma instância (self).

class Student:
    school_name = "Python Academy"
    student_count = 0
    
    def __init__(self, name):
        self.name = name
        Student.student_count += 1
    
    @classmethod
    def get_school_info(cls):
        return f"School: {cls.school_name}, Students: {cls.student_count}"
    
    @classmethod
    def create_guest_student(cls):
        return cls("Guest")

Chame métodos de classe usando o nome da classe:

info = Student.get_school_info()
guest = Student.create_guest_student()

Métodos de classe também podem ser chamados a partir de instâncias:

alice = Student("Alice")
info_from_instance = alice.get_school_info()

Use @classmethod quando precisar acessar atributos de classe ou criar formas alternativas de construir objetos.

Experimente você mesmo

Esta lição não inclui um desafio de código.

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Object Oriented Programming