Classes base abstratas

Programação Orientada a Objetos Intermediária em Python

Jake Roach

Data Engineer

Classes base abstratas

Classes base abstratas criam um modelo para classes ao definir métodos abstratos que devem ser implementados por todas as filhas

  • Garante comportamento comum para um grupo de classes
  • Decorador @abstractmethod
  • Devem ser herdadas, não instanciadas
  • Nem todos os métodos precisam ser abstratos (métodos concretos)
class School:
    # Fazer coisas como matricular 
    # e adicionar um curso
class MiddleSchool:
    # Tocar um instrumento, entrar em um clube
    # mas deve matricular e adicionar cursos
class HighSchool:
    # Praticar esporte do time, candidatar-se
    # à faculdade, mas deve matricular 
    # e adicionar cursos
Programação Orientada a Objetos Intermediária em Python

Criando uma classe base abstrata

from abc import ABC, abstractmethod

# Crie uma classe base abstrata que herda # de ABC class School(ABC): @abstractmethod def enroll(self): # Este método deve ser implementado # em classes que herdam dela pass
# Métodos concretos são herdados def graduate(self): print("Congrats on graduating!")
  • Herde da classe ABC no módulo abc
  • pass
  • Qualquer classe que herde School deve implementar enroll()
  • Também pode ter métodos concretos
Programação Orientada a Objetos Intermediária em Python

Implementando classes base abstratas

class HighSchool(School):
    def enroll(self):
        print("Welcome to high school!")

# Crie uma instância de HighSchool
high_school = HighSchool()
high_school.enroll()
Welcome to high school!
high_school.graduate()
Congrats on graduating!
  • HighSchool deve definir um método enroll()
  • TypeError se enroll() não for definido
  • HighSchool herda o método graduate()
Programação Orientada a Objetos Intermediária em Python

Vários métodos abstratos

class School(ABC):
    @abstractmethod
    def enroll(self):
        pass

    @abstractmethod
    def add_course(self, course_name):
        pass

    def graduate(self):
        print("Congrats on graduating!")

  • Dois métodos abstratos: enroll() e add_course()
class HighSchool(School):
    def __init__(self):
        self.courses = []

    # Implementando método abstrato
    def enroll(self):
        print("Welcome to high school!")

    # Implementando método abstrato
    def add_course(self, course_name):
        self.courses.append(course_name)
        print(f"You enrolled in {course_name}")

Programação Orientada a Objetos Intermediária em Python

Vamos praticar!

Programação Orientada a Objetos Intermediária em Python

Preparing Video For Download...