TelenkovDmitry il y a 7 mois
Parent
commit
1e1a62e5cd

+ 21 - 0
courses/python_oop/inheritance/misc.py

@@ -0,0 +1,21 @@
+import json
+
+def main():
+    data = ['foo', {'bar':['baz', None, 1.0, 2], 'key': 'value', 10: 'ten'}]
+
+    print(f"Данные для преобразования типа {type(data)}: {data}")
+
+    # Данные в строку json
+    data_json = json.dumps(data)
+    assert type(data_json) == str
+    print(f"После json.dump получили {type(data_json)}")
+    print(data_json)
+
+    # строка json в объект python
+    python_data = json.loads(data_json)   
+    assert type(python_data) == list
+    print(f"После json.loads получили {type(python_data)}")
+    print(python_data)
+
+if __name__ == '__main__':
+    main()

+ 79 - 3
courses/python_oop/inheritance/mixin_3.py

@@ -41,9 +41,8 @@ class Car(JsonSerializableMixin):
 class DictMixin:
 
     def to_dict(self):
-        # print(vars(self))
-        print(json.dumps(self, default = lambda x:x.__dict__))
-        return self.__dict__
+        foo = json.dumps(self, default = lambda x:x.__dict__)
+        return json.loads(foo)
 
 class Phone(DictMixin):
     def __init__(self, number):
@@ -84,6 +83,83 @@ def main():
     john_doe_dict = john_doe.to_dict()
 
     print(john_doe_dict)
+    print(type(john_doe_dict))
+
+    assert john_doe_dict == {
+        'name': 'John Doe',
+        'age': 30,
+        'address': {
+            'street': '123 Main St',
+            'city': 'Anytown',
+            'state': 'CA',
+            'zip_code': '12345'
+        }
+    }
+
+    address = Address("123 Main St", "Albuquerque", "NM", "987654")
+    assert address.to_dict() == {
+        'street': '123 Main St',
+        'city': 'Albuquerque',
+        'state': 'NM',
+        'zip_code': '987654'
+    }
+    walter = Person("Walter White", 30, address)
+    assert walter.to_dict() == {'address': {'city': 'Albuquerque',
+                                            'state': 'NM',
+                                            'street': '123 Main St',
+                                            'zip_code': '987654'},
+                                'age': 30,
+                                'name': 'Walter White'}
+
+    walter_phone = Phone("555-1234")
+    walter.phone = walter_phone
+    assert walter.to_dict() == {'address': {'city': 'Albuquerque',
+                                            'state': 'NM',
+                                            'street': '123 Main St',
+                                            'zip_code': '987654'},
+                                'age': 30,
+                                'name': 'Walter White',
+                                'phone': {'number': '555-1234'}}
+
+    company_address = Address("3828 Piermont Dr", "Albuquerque", "NM", "12345")
+    company = Company("SCHOOL", company_address)
+
+    assert company.to_dict() == {'address': {'city': 'Albuquerque',
+                                            'state': 'NM',
+                                            'street': '3828 Piermont Dr',
+                                            'zip_code': '12345'},
+                                'name': 'SCHOOL'}
+
+    jesse_address = Address("456 Oak St", "Albuquerque", "NM", "12345")
+    jesse = Person("Jesse Bruce Pinkman", 27, jesse_address)
+    jesse.phone = Phone("555-5678")
+
+    fring = Person("Gustavo Fring", 55, Address("Los Pollos Hermanos", "Albuquerque", "NM", "12345"))
+    fring.friends = [walter, jesse]
+
+    assert fring.to_dict() == {'address': {'city': 'Albuquerque',
+                                        'state': 'NM',
+                                        'street': 'Los Pollos Hermanos',
+                                        'zip_code': '12345'},
+                            'age': 55,
+                            'friends': [{'address': {'city': 'Albuquerque',
+                                                        'state': 'NM',
+                                                        'street': '123 Main St',
+                                                        'zip_code': '987654'},
+                                            'age': 30,
+                                            'name': 'Walter White',
+                                            'phone': {'number': '555-1234'}},
+                                        {'address': {'city': 'Albuquerque',
+                                                        'state': 'NM',
+                                                        'street': '456 Oak St',
+                                                        'zip_code': '12345'},
+                                            'age': 27,
+                                            'name': 'Jesse Bruce Pinkman',
+                                            'phone': {'number': '555-5678'}}],
+                            'name': 'Gustavo Fring'}
+
+    print('Good')
+
     '''
     assert john_doe_dict == {
         'name': 'John Doe',