From 35319d56064ac631991fc9e9a36d7450bb512cd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luiz=20Ot=C3=A1vio?= Date: Mon, 14 Nov 2022 11:14:29 -0300 Subject: [PATCH] =?UTF-8?q?M=C3=A9todos=20de=20classe=20+=20factories=20(f?= =?UTF-8?q?=C3=A1bricas)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aula128.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 aula128.py 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()