tgoop.com/hw_code/598
Create:
Last Update:
Last 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
BY Hello World
Share with your friend now:
tgoop.com/hw_code/598