22 lines
527 B
Python
22 lines
527 B
Python
"""Сервис заказов демо-проекта ci-demo (СТРПО, неделя 9, Gitea edition)."""
|
|
from dataclasses import dataclass
|
|
|
|
from .discounts import Discount
|
|
|
|
|
|
@dataclass
|
|
class Order:
|
|
items: dict[str, float]
|
|
|
|
@property
|
|
def total(self) -> float:
|
|
return sum(self.items.values())
|
|
|
|
|
|
class OrderService:
|
|
def __init__(self, discount: Discount) -> None:
|
|
self.discount = discount
|
|
|
|
def total(self, order: Order) -> float:
|
|
return round(self.discount.apply(order.total), 2)
|