TGViewer
Python Developer Python Developer @python_tg · 20.9K subscribers
Post #2535 5.14K
🐍 Создание классов через type()

А вы знали, что в Python классы можно создавать не только через ключевое слово class?

Это возможно благодаря встроенной функции type() — с помощью нее можно динамически формировать структуру класса прямо во время выполнения кода.

Рассмотрим пример:
MyClass = type('MyClass', (), {'x': 10})

obj = MyClass()
print(obj.x) # → 10

Здесь мы создаём новый класс MyClass с атрибутом x, без использования class.


Функция type() в этом виде принимает три аргумента: имя класса — 'MyClass', кортеж базовых классов — (), словарь атрибутов и методов — {'x': 10}.

На выходе — полноценный класс, эквивалентный обычному.


Такой подход позволяет создавать и настраивать классы в рантайме — это полезно, если нужно:
▶️ сформировать структуру объекта из JSON или схемы

▶️ динамически сгенерировать классы для тестов, моков или CLI-команд

▶️ построить кастомный мини-фреймворк под задачу


Такие приёмы используют и крупные библиотеки вроде Django, SQLAlchemy и Pydantic — но фишка работает и в обычных проектах.

❤ — если было полезно
😎 — если уже знал об этом

tags: #обучение

➡ Python Developer | Чат
  • ❤ 57
  • 👍 6
  • 🔥 6
  • 😎 3
More from @python_tg
  1. Oct 7, 2026📱 270 инструментов для Python-разработчика В репозитории есть: 🫡 Линтеры и форматтеры; �…
  2. Oct 6, 2026📱 GraphQL vs REST: что выбрать для API В статье на одном примере разбирают разницу между…
  3. Oct 5, 2026Post #4052
  4. Oct 5, 2026Очнись, нас готовят к цифровому ГУЛАГу Уже в десятках регионов России отключают мобильный…
  5. Oct 5, 2026📱 Один инструмент вместо половины Python-тулчейна Он может заменить pip, pip-tools, pipx,…
  6. Oct 4, 2026📱 Как ускорить Python-код с помощью типизации В статье разбирают: 🫡 Компиляцию типизиров…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →