# https://stepik.org/lesson/701985/step/12?unit=702086 from typing import List class Thing: def __init__(self, name: str, weight: int): self.name, self.weight = name, weight def __repr__(self): return f"{self.__class__.__name__}({self.name!r}, {self.weight!r})" class Bag: def __init__(self, max_weight: int): self.__things: List[Thing] = [] self.max_weight = max_weight def __repr__(self): return f"{self.__class__.__name__}({self.max_weight!r})" @property def weight(self) -> int: return sum(t.weight for t in self.__things) @property def remaining_weight(self) -> int: return self.max_weight - self.weight @property def things(self) -> List[Thing]: return self.__things def add_thing(self, thing: Thing): if self.remaining_weight >= thing.weight: self.__things.append(thing) def remove_thing(self, indx: int): del self.__things[indx] def get_total_weight(self) -> int: return self.weight bag = Bag(1000) bag.add_thing(Thing("Книга по Python", 100)) bag.add_thing(Thing("Котелок", 500)) bag.add_thing(Thing("Спички", 20)) bag.add_thing(Thing("Бумага", 100)) w = bag.get_total_weight() for t in bag.things: print(f"{t.name}: {t.weight}") def tests(): ... tests()