Classi astratte di base

Programmazione a oggetti intermedia in Python

Jake Roach

Data Engineer

Classi astratte di base

Le classi astratte di base definiscono un modello per le classi, con metodi astratti da implementare in tutte le sottoclassi

  • Garantisce un comportamento comune a un gruppo di classi
  • Decoratore @abstractmethod
  • Pensata per essere ereditata, non istanziata
  • Non tutti i metodi devono essere astratti (metodi concreti)
class School:
    # Azioni come iscrivere 
    # e aggiungere un corso
class MiddleSchool:
    # Suonare uno strumento, unirsi a un club
    # ma deve iscrivere e aggiungere corsi
class HighSchool:
    # Fare sport scolastici, fare domanda
    # per il college, ma deve iscrivere 
    # e aggiungere corsi
Programmazione a oggetti intermedia in Python

Creare una classe astratta di base

from abc import ABC, abstractmethod

# Crea una classe astratta di base che eredita # da ABC class School(ABC): @abstractmethod def enroll(self): # Questo metodo deve essere implementato # nelle classi che ereditano pass
# I metodi concreti sono ereditati def graduate(self): print("Congrats on graduating!")
  • Eredita dalla classe ABC del modulo abc
  • pass
  • Ogni classe che eredita School deve implementare enroll()
  • Puoi anche definire metodi concreti
Programmazione a oggetti intermedia in Python

Implementare classi astratte di base

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

# Crea un'istanza di HighSchool
high_school = HighSchool()
high_school.enroll()
Welcome to high school!
high_school.graduate()
Congrats on graduating!
  • HighSchool deve definire enroll()
  • TypeError se enroll() non è definito
  • HighSchool eredita il metodo graduate()
Programmazione a oggetti intermedia in Python

Più metodi astratti

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

    @abstractmethod
    def add_course(self, course_name):
        pass

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

  • Due metodi astratti: enroll() e add_course()
class HighSchool(School):
    def __init__(self):
        self.courses = []

    # Implementazione del metodo astratto
    def enroll(self):
        print("Welcome to high school!")

    # Implementazione del metodo astratto
    def add_course(self, course_name):
        self.courses.append(course_name)
        print(f"You enrolled in {course_name}")

Programmazione a oggetti intermedia in Python

Esercitiamoci!

Programmazione a oggetti intermedia in Python

Preparing Video For Download...