Codice sorgente per gestore_spese.domain.entities.abstract_spesa
"""Contratto astratto dell'entità di dominio Spesa."""
from __future__ import annotations
from abc import ABC, abstractmethod
from datetime import datetime
[documenti]
class AbstractSpesa(ABC):
"""Definisce i metodi che ogni entità di tipo Spesa deve implementare."""
@property
@abstractmethod
def data(self) -> datetime:
"""Ritorna la data della spesa.
:return: data della spesa
:rtype: datetime
"""
@data.setter
@abstractmethod
def data(self, data: datetime) -> None:
"""Imposta la data della spesa.
:param datetime data: nuova data della spesa
"""
@property
@abstractmethod
def descrizione(self) -> str:
"""Ritorna la descrizione della spesa.
:return: descrizione della spesa
:rtype: str
"""
@descrizione.setter
@abstractmethod
def descrizione(self, descrizione: str) -> None:
"""Imposta la descrizione della spesa.
:param str descrizione: nuova descrizione della spesa
"""
@property
@abstractmethod
def importo(self) -> float:
"""Ritorna l'importo della spesa.
:return: importo della spesa
:rtype: float
"""
@importo.setter
@abstractmethod
def importo(self, importo: float) -> None:
"""Imposta l'importo della spesa.
:param float importo: nuovo importo della spesa
"""
@abstractmethod
def __repr__(self) -> str:
"""Definisce la rappresentazione tecnica delle istanze di spesa.
:return: rappresentazione tecnica della spesa
:rtype: str
"""
@abstractmethod
def __eq__(self, other: object) -> bool:
"""Definisce l'uguaglianza tra due istanze di spesa.
:return: True se uguali, altrimenti False
:rtype: bool
"""
@abstractmethod
def __hash__(self) -> int:
"""Ritorna un hash coerente con :meth:`__eq__`.
:return: hash dell'istanza
:rtype: int
"""