वेग अनुक्रम एनीमेशन की एक सूची वस्तु उदाहरणों के भीतर नेस्ट एक वस्तु उदाहरण अजगर

0

सवाल

मैं कर रहा हूँ एक app है कि आप की अनुमति होगी के लिए या तो में प्रवेश करें, या एक रेस्तरां बनाने के लिए. के रूप में एक रेस्तरां के मालिक, आप कर सकते हैं जोड़ने/हटाने/संपादित रेफ्रिजरेटर. अपने अंत लक्ष्य है कि मैं एक रेस्तरां की सूची है कि मैं लिखने के लिए एक JSON फ़ाइल, और कभी भी मैं फिर से दौड़ना अनुप्रयोग, मैं खींच सकते हैं कि डेटा में और अनुकरण किया जा रहा है "एक रेस्तरां के मालिक" और संपादित फ्रिज के लिए चुना रेस्तरां में.

मैं अनिवार्य रूप से चाहते हैं इस:

data = {
    restaurants: [
        {
            restaurant: {
            name: "Peppy",
            pw: "123",
            fridges: [
                {
                    fridge: {
                        owner: restaurant.name,
                        contents: []
                    }
                }
            ]
        }
        }
    ]
}

मैं निम्नलिखित दो वर्गों(प्रासंगिक तरीकों):


class Restaurant:
    def __init__(self, owner, password):
        self.__password = password
        self.owner = owner
        self.__owned_fridges = [] # list of owned fridges

    def add_fridge(self):
        nickname = input("What would you like to name the fridge: ")
        self.__owned_fridges.append(fr(self.owner, nickname))
        print("Fridge added!")
 

class Fridge:
    def __init__(self, owner, nickname):
        self.nickname = nickname
        self.owner = owner
        self.__authorized_users = [owner]
        self.__contents = []

    def add_to_fridge(self):
        if len(self.__contents) == 5:
            print("Your fridge is full!")
        else:
            item = input("What would you like to add : ")
            self.__contents.append(item)

मेरा मुद्दा है में इस वेग अनुक्रम एनीमेशन के लिए JSON. मैं ने पाया है कि निम्न काम करता है serialize करने के लिए रेस्तरां करने के लिए वस्तु JSON, लेकिन नहीं नेस्टेड फ्रिज वस्तुओं :

data = {
    'restaurants': []
}

# Testing code
test = res("Jac", "350b534")
test.add_fridge()
test.add_fridge()
data['restaurants'].append(json.dumps(test.__dict__))

मैं कर रहा हूँ करने के लिए अपेक्षाकृत नए अजगर, और मैं आने से एक js पृष्ठभूमि है, तो मैं अभी भी कर रहा हूँ हो रही है के साथ परिचित वाक्य रचना है । मेरा सवाल है, मैं कैसे serialize भीतर की सूची फ्रिज?

json oop python
2021-11-24 03:41:22
1

सबसे अच्छा जवाब

0

सबसे पहले, मैं सुझाव है बाहर की जाँच dataclasses के रूप में वे के काम को आसान बनाने के साथ काम कर कक्षाओं में अजगर. के साथ dataclasses, आप की जरूरत नहीं है को परिभाषित करने के लिए dunder तरीकों की तरह __init__ और __repr__ के रूप में वे स्वतः उत्पन्न हो जाएगा डिफ़ॉल्ट रूप से ।

के लिए अपने विशेष मामले का उपयोग करें, आप कर सकते हैं इस मुद्दे को हल वेग अनुक्रम एनीमेशन के साथ एक नेस्टेड वर्ग के मॉडल के लिए एक dict / JSON स्ट्रिंग का उपयोग कर एक वैकल्पिक default प्रतिदेय है कि आप में पारित कर सकते हैं करने के लिए json.dumps. उदाहरण के लिए, आप पास कर सकते हैं एक लैम्ब्डा (जो अनिवार्य रूप से एक आशुलिपि समारोह के साथ) इस तरह के रूप में lambda o: o.__dict__है , जो retrieves __dict__ विशेषता वस्तुओं के लिए नहीं कर रहे हैं कि स्वाभाविक serializable करने के लिए JSON, के रूप में नीचे दिखाया गया है.

from __future__ import annotations

import json
from dataclasses import dataclass


@dataclass
class A:
    my_string: str
    b: list[B]


@dataclass
class B:
    my_int: int
    password: str


a = A('test', [B(2, '123'), B(5, '321')])
print(a)
# A(my_string='test', b=[B(my_int=2, password='123'), B(my_int=5, password='321')])

print(json.dumps(a, default=lambda o: o.__dict__))
# {"my_string": "test", "b": [{"my_int": 2, "password": "123"}, {"my_int": 5, "password": "321"}]}

लेकिन ध्यान दें कि dataclasses भी प्रदान करता है एक सहायक समारोह asdict अगर आप की जरूरत है परिवर्तित करने के लिए एक dataclass उदाहरण के लिए, एक dict उदाहरण ।


हालांकि, यदि आप एक और अधिक उन्नत उपयोग के मामले में, उदाहरण के लिए - de-वेग अनुक्रम एनीमेशन JSON डेटा के लिए एक नेस्टेड वर्ग के मॉडल, या मानचित्रण एक dataclass क्षेत्र में इस तरह के रूप में password दूसरे करने के लिए JSON के प्रमुख के रूप में इस तरह pw के रूप में सूचीबद्ध उदाहरण - मैं सुझाव है कि बाहर की जाँच एक क्रमबद्धता पुस्तकालय की तरह dataclass-जादूगरहै, जो अच्छी तरह से काम करता है के साथ एक नेस्टेड dataclass मॉडल के रूप में ऊपर.

2021-11-24 05:02:30

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में