4
4
5
5
6
6
class Record :
7
- def __init__ (self , amount , comment , date = None ):
7
+ '''Класс записей пользователя.'''
8
+ def __init__ (
9
+ self ,
10
+ amount : float ,
11
+ comment : str ,
12
+ date : dt .date = None
13
+ ) -> None :
8
14
self .amount = amount
9
15
self .comment = comment
10
16
if date is None :
@@ -14,45 +20,54 @@ def __init__(self, amount, comment, date=None):
14
20
15
21
16
22
class Calculator :
17
- def __init__ (self , limit ):
23
+ '''Базовый класс калькулятора.'''
24
+ def __init__ (self , limit ) -> None :
18
25
self .limit = limit
19
26
self .records = []
20
27
21
- def get_today_date (self ):
28
+ def get_today_date (self ) -> dt .date :
29
+ """Получить текущую дату."""
22
30
return dt .date .today ()
23
31
24
- def get_week_date (self ):
32
+ def get_week_date (self ) -> dt .date :
33
+ """Получить дату неделю назад."""
25
34
return self .get_today_date () - dt .timedelta (days = 7 )
26
35
27
- def add_record (self , record ):
36
+ def add_record (self , record ) -> None :
37
+ """Добавить новую запись."""
28
38
return self .records .append (record )
29
39
30
- def get_today_stats (self ):
40
+ def get_today_stats (self ) -> float :
41
+ """Получить сумму расходов за сегодня."""
31
42
today = self .get_today_date ()
32
43
t_amount = [record .amount for record in self .records
33
44
if record .date == today ]
34
45
return sum (t_amount )
35
46
36
- def get_week_stats (self ):
47
+ def get_week_stats (self ) -> float :
48
+ """Получить сумму расходов за неделю."""
37
49
today = self .get_today_date ()
38
50
week_ago = self .get_week_date ()
39
51
week_amount = [record .amount for record in self .records
40
52
if today >= record .date > week_ago ]
41
53
return sum (week_amount )
42
54
43
- def get_today_limit (self ):
55
+ def get_today_limit (self ) -> float :
56
+ """Получить допустимую сумму расходов за сегодня."""
44
57
return self .limit - self .get_today_stats ()
45
58
46
59
47
60
class CashCalculator (Calculator ):
61
+ '''Класс калькулятора денег.'''
48
62
USD_RATE = 73.20
49
63
EURO_RATE = 86.64
50
64
51
- def __init__ (self , limit ) :
65
+ def __init__ (self , limit : float ) -> None :
52
66
self .limit = limit
53
67
self .records = []
54
68
55
- def get_today_cash_remained (self , currency ):
69
+ def get_today_cash_remained (self , currency : str ) -> str :
70
+ """Вернуть информационное сообщение о финансовых расходах."""
56
71
self .currency = currency
57
72
t_amount = self .get_today_limit ()
58
73
currencies = {'rub' : ('руб' , 1 ),
@@ -72,11 +87,13 @@ def get_today_cash_remained(self, currency):
72
87
73
88
74
89
class CaloriesCalculator (Calculator ):
75
- def __init__ (self , limit ):
90
+ '''Класс калькулятора калорий.'''
91
+ def __init__ (self , limit : float ) -> None :
76
92
self .limit = limit
77
93
self .records = []
78
94
79
- def get_calories_remained (self ):
95
+ def get_calories_remained (self ) -> str :
96
+ """Вернуть информационное сообщение о расходах калорий."""
80
97
positive_message = ('Сегодня можно съесть что-нибудь ещё, '
81
98
'но с общей калорийностью не более' )
82
99
t_amount = self .get_today_limit ()
0 commit comments