TelenkovDmitry 7 mesi fa
parent
commit
364f8855e7
1 ha cambiato i file con 77 aggiunte e 1 eliminazioni
  1. 77 1
      courses/python_oop/inheritance/mixin_3.py

+ 77 - 1
courses/python_oop/inheritance/mixin_3.py

@@ -1,3 +1,5 @@
+import json
+
 
 class PermissionnMixin:
 
@@ -21,8 +23,81 @@ class User(PermissionnMixin):
         self.name = name
         self.email = email
 
-    
+# --------------------------------------------------
+
+class JsonSerializableMixin:
+
+    def to_json(self):
+        return json.dumps(self.__dict__)
+
+
+class Car(JsonSerializableMixin):
+    def __init__(self, make: str, color: str):
+        self.make = make
+        self.color = color
+
+# --------------------------------------------------
+
+class DictMixin:
+
+    def to_dict(self):
+        # print(vars(self))
+        print(json.dumps(self, default = lambda x:x.__dict__))
+        return self.__dict__
+
+class Phone(DictMixin):
+    def __init__(self, number):
+        self.number = number
+
+class Person(DictMixin):
+    def __init__(self, name, age, address):
+        self.name = name
+        self.age = age
+        self.address = address
+
+
+class Address(DictMixin):
+    def __init__(self, street, city, state, zip_code):
+        self.street = street
+        self.city = city
+        self.state = state
+        self.zip_code = zip_code
+
+
+class Company(DictMixin):
+    def __init__(self, name, address):
+        self.name = name
+        self.address = address
+
+
 def main():
+
+    # car = Car("Toyota", "red")
+    # print(car.__dict__)
+    # print(vars(car))
+    # # print(car.to_json())
+    # assert car.to_json() == '{"make": "Toyota", "color": "red"}'
+
+    address = Address("123 Main St", "Anytown", "CA", "12345")
+    john_doe = Person("John Doe", 30, address)
+
+    john_doe_dict = john_doe.to_dict()
+
+    print(john_doe_dict)
+    '''
+    assert john_doe_dict == {
+        'name': 'John Doe',
+        'age': 30,
+        'address': {
+            'street': '123 Main St',
+            'city': 'Anytown',
+            'state': 'CA',
+            'zip_code': '12345'
+        }
+    }
+    '''
+
+    '''
     user1 = User('Alice', 'alice@example.com')
     user2 = User('Bob', 'bob@example.com')
 
@@ -56,6 +131,7 @@ def main():
     assert user1.has_permission('execute') is False
 
     print('Good')
+    '''
 
 
 if __name__ == '__main__':