Все самое полезное для питониста в одном канале.
Учиться у нас: clc.to/6e5Csg
Для обратной связи: @proglibrary_feeedback_bot
По рекламе: @tproger_sales_bot
РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36
Post #7314
4.33K
🧩 Dataclass и NamedTuple: почему атрибуты выглядят странно
Если вы впервые видите такой код:
или
— возникает логичный вопрос: почему строки внутри класса выглядят как class attributes, но становятся instance attributes?
✔️ Ответ прост: это не атрибуты — это type annotations.
Они не создают переменные, а просто записываются в
А дальше:
– dataclass генерирует атрибуты и превращает эти поля в атрибуты экземпляра;
– NamedTuple делает то же самое, создавая неизменяемые объекты.
Даже если вы пишете:
— это выглядит как class attribute, но в dataclass это всего лишь default значение для instance attribute.
➡️ Магии нет — есть автогенерация кода на основе аннотаций.
🔗 Подробнее
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🐸 Библиотека питониста
#буст
Если вы впервые видите такой код:
@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
🐸 Библиотека питониста
#буст
- ❤ 5
- 👍 2













