PYTHONL Telegram 4922
This media is not supported in your browser
VIEW IN TELEGRAM
🧠 Как превратить любой Python-объект в читаемый словарь — даже если это класс с кучей вложенных полей

Когда работаешь с API, логами или дебажишь сложные объекты — хочется увидеть весь объект как словарь, без .__dict__, без сериализации, без ручного разбора.

Вот приём, который делает это рекурсивно, красиво и гибко — с помощью dataclasses и asdict, даже если объект не был dataclass изначально.

python 
from dataclasses import dataclass, asdict, is_dataclass
from types import SimpleNamespace

def deep_to_dict(obj):
if isinstance(obj, dict):
return {k: deep_to_dict(v) for k, v in obj.items()}
elif isinstance(obj, list):
return [deep_to_dict(i) for i in obj]
elif is_dataclass(obj):
return asdict(obj)
elif isinstance(obj, SimpleNamespace):
return deep_to_dict(vars(obj))
elif hasattr(obj, '__dict__'):
return deep_to_dict(vars(obj))
else:
return obj


🧠 Рекурсивный разбор любых Python-объектов

📌 Подходит для логирования, сериализации, отладки
📌 Работает с dataclass, обычными классами, объектами из types, JSON-like структурами
📌 Можно расширить: добавить фильтрацию полей, вывод в YAML или сохранение в файл

Теперь любой “монстр из API” — превращается в читаемый словарь за одну строчку.
👍106🔥4🤩1



tgoop.com/pythonl/4922
Create:
Last Update:

🧠 Как превратить любой Python-объект в читаемый словарь — даже если это класс с кучей вложенных полей

Когда работаешь с API, логами или дебажишь сложные объекты — хочется увидеть весь объект как словарь, без .__dict__, без сериализации, без ручного разбора.

Вот приём, который делает это рекурсивно, красиво и гибко — с помощью dataclasses и asdict, даже если объект не был dataclass изначально.

python 
from dataclasses import dataclass, asdict, is_dataclass
from types import SimpleNamespace

def deep_to_dict(obj):
if isinstance(obj, dict):
return {k: deep_to_dict(v) for k, v in obj.items()}
elif isinstance(obj, list):
return [deep_to_dict(i) for i in obj]
elif is_dataclass(obj):
return asdict(obj)
elif isinstance(obj, SimpleNamespace):
return deep_to_dict(vars(obj))
elif hasattr(obj, '__dict__'):
return deep_to_dict(vars(obj))
else:
return obj


🧠 Рекурсивный разбор любых Python-объектов

📌 Подходит для логирования, сериализации, отладки
📌 Работает с dataclass, обычными классами, объектами из types, JSON-like структурами
📌 Можно расширить: добавить фильтрацию полей, вывод в YAML или сохранение в файл

Теперь любой “монстр из API” — превращается в читаемый словарь за одну строчку.

BY Python/ django


Share with your friend now:
tgoop.com/pythonl/4922

View MORE
Open in Telegram


Telegram News

Date: |

As five out of seven counts were serious, Hui sentenced Ng to six years and six months in jail. “Hey degen, are you stressed? Just let it all out,” he wrote, along with a link to join the group. 2How to set up a Telegram channel? (A step-by-step tutorial) Invite up to 200 users from your contacts to join your channel The main design elements of your Telegram channel include a name, bio (brief description), and avatar. Your bio should be:
from us


Telegram Python/ django
FROM American