Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Método Abstrato | Polimorfismo e Abstração
Programação Orientada a Objetos em Python Avançado

book
Método Abstrato

Método Abstrato é um método que deve ser redefinido em subclasses.

Para criar um método abstrato, você deve importar o decorador @abstractmethod da biblioteca abc.

python
from abc import ABC, abstractmethod

Nota

Atenção: o decorador é importado sem o símbolo @.

from abc import ABC, abstractmethod

class SomeClass(ABC):
@abstractmethod
def some_method():
pass

instance = SomeClass() # TypeError
12345678
from abc import ABC, abstractmethod class SomeClass(ABC): @abstractmethod def some_method(): pass instance = SomeClass() # TypeError
copy

Os métodos abstratos devem ser implementados nas subclasses. Você não pode criar uma subclasse sem redefinir todos os métodos abstratos:

from abc import ABC, abstractmethod

class AbstractParent(ABC):
@abstractmethod
def first_method():
pass
@abstractmethod
def second_method():
pass

class Child(AbstractParent):
def first_method(self):
print("The first method")

instance = Child() # TypeError
12345678910111213141516
from abc import ABC, abstractmethod class AbstractParent(ABC): @abstractmethod def first_method(): pass @abstractmethod def second_method(): pass class Child(AbstractParent): def first_method(self): print("The first method") instance = Child() # TypeError
copy

A classe Child preservou o estado da Classe Abstrata porque o second_method não foi redefinido e a classe ABC existe na hierarquia de herança.

from abc import ABC, abstractmethod

class AbstractParent(ABC):
@abstractmethod
def first_method():
pass
@abstractmethod
def second_method():
pass

class Child(AbstractParent):
def first_method(self):
print("The first method")

def second_method(self):
print("The second method")


instance = Child()
instance.first_method()
instance.second_method()
12345678910111213141516171819202122
from abc import ABC, abstractmethod class AbstractParent(ABC): @abstractmethod def first_method(): pass @abstractmethod def second_method(): pass class Child(AbstractParent): def first_method(self): print("The first method") def second_method(self): print("The second method") instance = Child() instance.first_method() instance.second_method()
copy

Nota

As classes e métodos abstratos existem para fornecer uma estrutura de classe rigorosa.

question mark

Classes Abstratas devem ter:

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 6

Pergunte à IA

expand
ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

some-alt