TG Telegram Group & Channel
Hello World | United States America (US)
Create: Update:

Ну и напоследок еще один немаловажный момент, связанный с датаклассами. Иногда нам в таком классе нужна чисто классовая переменная (сори за масло масляное, cls var). Рассмотрим на примере с датаклассами и без.

Создание переменной класса

Без датакласса мы бы написали так


class User:
cvar: float = 0.5

def __init__(self, user_id: int, name: str) -> None:
self.user_id = user_id
self.name = name


Используя датакласс мы бы написали так


from typing import ClassVar

@dataclass
class User:
cvar: ClassVar[float] = 0.5

user_id: int = field(default_factory=my_super_ultra_id_func)
name: str = field(default="")

В последнем примере вернул поля и для user_id и для name, поскольку именованый cvar должен был бы по идее идти после них, но я оставил его в начале.

Здесь в принципе без детальных пояснений. С typing наверняка все знакомы, если на норм проектах пишете... Как я и говорил, датаклассы абузят понятие классовой переменной, и базовый синтаксис в классах, но зато взамен вы получаете множество уже реализованных "под капотом" методов для работы с данными. В целом, справедливый обмен. Если остались какие то вопросы, в доке все довольно хорошо объяснено, и всегда можно заглянуть туда.

@hw_code

Ну и напоследок еще один немаловажный момент, связанный с датаклассами. Иногда нам в таком классе нужна чисто классовая переменная (сори за масло масляное, cls var). Рассмотрим на примере с датаклассами и без.

Создание переменной класса

Без датакласса мы бы написали так


class User:
cvar: float = 0.5

def __init__(self, user_id: int, name: str) -> None:
self.user_id = user_id
self.name = name


Используя датакласс мы бы написали так


from typing import ClassVar

@dataclass
class User:
cvar: ClassVar[float] = 0.5

user_id: int = field(default_factory=my_super_ultra_id_func)
name: str = field(default="")

В последнем примере вернул поля и для user_id и для name, поскольку именованый cvar должен был бы по идее идти после них, но я оставил его в начале.

Здесь в принципе без детальных пояснений. С typing наверняка все знакомы, если на норм проектах пишете... Как я и говорил, датаклассы абузят понятие классовой переменной, и базовый синтаксис в классах, но зато взамен вы получаете множество уже реализованных "под капотом" методов для работы с данными. В целом, справедливый обмен. Если остались какие то вопросы, в доке все довольно хорошо объяснено, и всегда можно заглянуть туда.

@hw_code


>>Click here to continue<<

Hello World




Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)