|
@@ -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__':
|