Условия задачи:

 

Класс CashRegister. Это упражнение предполагает создание класса Retailitem из упражнения 5 по программированию. Создайте класс CashRegister (Кассовый аппарат), который может использоваться вместе с классом Retailitem. Класс CashRegister должен
иметь внутренний список объектов Retailitem, а также приведенные ниже методы.
• Метод purchase_i tem ( ) (приобрести товар) в качестве аргумента принимает объект Retailitem. При каждом вызове метода purchase _ item () объект Retailitem, передан­ный в качестве аргумента, должен быть добавлен в список. 
• Метод get _ total () (получить сумму покупки) возвращает общую стоимость всех объектов Retailitem, хранящихся во внутреннем списке объекта CashRegister. 

• Метод show_ items () (показать товары) выводит данные об объектах Retailitem, хранящихся во внутреннем списке объекта CashRegister.
• Метод clear () (очистить) должен очистить внутренний список объекта CashRegister.
Продемонстрируйте класс CashRegister в программе, которая позволяет пользователю выбрать несколько товаров для покупки. Когда пользователь готов рассчитаться за покупку, программа должна вывести список всех товаров, которые он выбрал для покупки, а также их общую стоимость.

 

Решение задачи:

class RetailItem:
    def __init__(self,  description, quantity, cost ):
        self.__description = description
        self.__quantity = quantity
        self.__cost = cost
    def set_description(self,description):
        self.__description = description
    def set_quantity(self, quantity):
        self.__quantity = quantity
    def set_cost(self, cost):
        self.__cost = cost
    def get_desckription(self):
        return self.__description
    def get_quantity(self):
        return self.__quantity
    def get_cost(self):
        return self.__cost
    def __str__(self):
        return f'описание:{self.__description} \nколичество:{self.__quantity}\nцена: {self.__cost}'

class CashRegister(RetailItem):
    def __init__(self):  #description, quantity, cost):
        self.__list_items = []
        #RetailItem.__init__(self, description, quantity, cost)
    def purchase_item(self, item):
        self.__list_items.append(item)
        return  self.__list_items


    def get_totall(self):
        totall = 0
        for i in self.__list_items:
            totall += i.get_cost() * i.get_quantity()
        return totall

    def show_items(self):
        for i in self.__list_items:
            print(i.get_desckription())

    def clear(self):
        self.__list_items.clear()
        print('Корзина очищена')

answer = 'д'
my_korzina = CashRegister()
while answer == 'д':
    description = input('Укажите наименование товара: ')
    quantity = int(input('Укажите количество товара: '))
    cost = float(input('Укажите стоимость товара: '))
    item  = RetailItem(description, quantity, cost)
    my_korzina.purchase_item(item)
    answer = input('Если желаете продолжить покупки выберите  - д: ')
print(f'Список покупок: {my_korzina.show_items()}, Общая стоимость: {my_korzina.get_totall()}')