diff --git a/aula128.py b/aula128.py new file mode 100644 index 0000000..800fb32 --- /dev/null +++ b/aula128.py @@ -0,0 +1,33 @@ +# Métodos de classe + factories (fábricas) +# São métodos onde "self" será "cls", ou seja, +# ao invés de receber a instância no primeiro +# parâmetro, receberemos a própria classe. +class Pessoa: + ano = 2023 # atributo de classe + + def __init__(self, nome, idade): + self.nome = nome + self.idade = idade + + @classmethod + def metodo_de_classe(cls): + print('Hey') + + @classmethod + def criar_com_50_anos(cls, nome): + return cls(nome, 50) + + @classmethod + def criar_sem_nome(cls, idade): + return cls('Anônima', idade) + + +p1 = Pessoa('João', 34) +p2 = Pessoa.criar_com_50_anos('Helena') +p3 = Pessoa('Anônima', 23) +p4 = Pessoa.criar_sem_nome(25) +print(p2.nome, p2.idade) +print(p3.nome, p3.idade) +print(p4.nome, p4.idade) +# print(Pessoa.ano) +# Pessoa.metodo_de_classe()