From 6eed35cbbe3f1ebc604d3dfc2d981c65e983294a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luiz=20Ot=C3=A1vio?= Date: Fri, 18 Nov 2022 09:36:20 -0300 Subject: [PATCH] =?UTF-8?q?abstractmethod=20para=20qualquer=20m=C3=A9todo?= =?UTF-8?q?=20j=C3=A1=20decorado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aula143.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 aula143.py diff --git a/aula143.py b/aula143.py new file mode 100644 index 0000000..18408dc --- /dev/null +++ b/aula143.py @@ -0,0 +1,35 @@ +# abstractmethod para qualquer método já decorado (@property e setter) +# É possível criar @property @property.setter @classmethod +# @staticmethod e métodos normais como abstratos, para isso +# use @abstractmethod como decorator mais interno. +# Foo - Bar são palavras usadas como placeholder +# para palavras que podem mudar na programação. +from abc import ABC, abstractmethod + + +class AbstractFoo(ABC): + def __init__(self, name): + self._name = None + self.name = name + + @property + def name(self): + return self._name + + @name.setter + @abstractmethod + def name(self, name): ... + + +class Foo(AbstractFoo): + def __init__(self, name): + super().__init__(name) + # print('Sou inútil') + + @AbstractFoo.name.setter + def name(self, name): + self._name = name + + +foo = Foo('Bar') +print(foo.name)