метод для преобразования объекта в словарь

Рейтинг: 0Ответов: 1Опубликовано: 24.02.2023

у меня есть класс Product()

    class Product:   
        __max_id = 0

        def __init__(self, name: str,  
                 ves: int,
                 category:str,
                 price: int,
                 srok_godnosti: int, 
                 volume: int):     
            self.id = Product.__max_id      #ID
            self.name = name                #Имя
            self.ves = ves                  #Вес
            self.category = category        #Категория
            self.price = price              #Цена
            self.godnost = srok_godnosti    #Срок годности
            self.volume = volume            #Объём
            Product.__max_id += 1
                                                    
        def __str__(self):
            return (
                f'ID: {self.id}<br>'   
                + f'Name: {self.name}<br>'
                + f'Ves: {self.ves} грамм<br>'
                + f'Category: {self.category}<br>'
                + f'Price: {self.price} рублей<br>'
                + f'Godnost: {self.godnost} дней<br>'
                + f'Volume: {self.volume} миллилитров<br>'
            )

И мне нужно создать в классе Product() метод для преобразования объекта в словарь, где названия атрибутов объекта будут ключами (то есть ключи являются строками, вы пишите их сами), а значения этих атрибутов значениями генерируемого словаря.

Для примера можно взять объект: Product('Milk', 1500, 'Products', 67, 7, 1000)

Дальше мне нужно

Преобразовать все объекты списка в словари(с помощью ранее созданного метода). Далее требуется создать еще один словарь, в котором ключами будут названия категорий товаров, а значениями списки товаров, подходящих под эту категорию(атрибут category равен категории, с которой мы работаем).

Список у нас такой:

products = [Product('Milk', 1500, 'Products', 67, 7, 1000),
            Product('', '', '', '', '', ''),                    
            Product('Chips', 150, 'Products', 103, 100, None),
            Product('Butter', 450, 'Products', 327, 21, None),
            Product('Lemon', 40, 'Products', 17, 62, None)]

А дальше

Создать метод в классе Product() по сохранению словаря в json файл. Путь json файла просто можно указать 'Путь_файла'

Ответы

▲ 1

Для того, чтобы преобразовать атрибуты объекта класса в словарь, надо унаследовать твой класс от класса dict и в инициализаторе вызывать init у родительского класса dict с помощью super() (super() возвращает ссылку на родительский класс), далее в аргументах нужно указать словарь, где ключи - атрибуты, значения - значения. Насколько я знаю встроенного метода нет