Dict, that behaves like an object.
To achieve this BasicDTO and DTO were introduced. They brings object-like attribute access appearance to dicts. BasicDTO more suits for "flat" dict and DTO - for more complex.
This Package doesn't provides validation(there are more suitable tools today) and "fromstring" functionality (single responsibility, you should load data by your own)
>>> from src.python_simple_dto.dto import DTO
>>> test_dict = {
... "users": [{"name": "Alex", "age": 29}, {"name": "Russel", "age": 19}]
... }
>>> test_dto
{'users': [{'name': 'Alex', 'age': 29}, {'name': 'Russel', 'age': 19}]}
>>> test_dto.users
[{'name': 'Alex', 'age': 29}, {'name': 'Russel', 'age': 19}]
>>>test_dto.roles = ["guest", "user", "moderator"]
>>>test_dto
{'users': [{'name': 'Alex', 'age': 29}, {'name': 'Russel', 'age': 19}], 'roles': ['guest', 'user', 'moderator']}
>>>test_dto.roles
['guest', 'user', 'moderator']
>>>test_dto["roles"]
['guest', 'user', 'moderator']