Библиотека питониста | Python, Django, Flask
39.5K subscribers
2.98K photos
80 videos
51 files
4.6K links
Все самое полезное для питониста в одном канале.

Список наших каналов: https://xn--r1a.website/proglibrary/9197

Курс по ML: https://cl

Для обратной связи: @proglibrary_feeedback_bot

По рекламе: @proglib_adv
РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36
Download Telegram
🧩 Dataclass и NamedTuple: почему атрибуты выглядят странно

Если вы впервые видите такой код:

@dataclass
class Person:
name: str
age: int


или

class Person(NamedTuple):
name: str
age: int

— возникает логичный вопрос: почему строки внутри класса выглядят как class attributes, но становятся instance attributes?

✔️ Ответ прост: это не атрибуты — это type annotations.

Они не создают переменные, а просто записываются в __annotations__.

А дальше:
– dataclass генерирует атрибуты и превращает эти поля в атрибуты экземпляра;
– NamedTuple делает то же самое, создавая неизменяемые объекты.

Даже если вы пишете:

profession: str = "Python Programmer"

— это выглядит как class attribute, но в dataclass это всего лишь default значение для instance attribute.

➡️ Магии нет — есть автогенерация кода на основе аннотаций.

🔗 Подробнее

🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🐸 Библиотека питониста

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍2