HW_CODE Telegram 598
Ну и напоследок еще один немаловажный момент, связанный с датаклассами. Иногда нам в таком классе нужна чисто классовая переменная (сори за масло масляное, 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



tgoop.com/hw_code/598
Create:
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

View MORE
Open in Telegram


Telegram News

Date: |

The imprisonment came as Telegram said it was "surprised" by claims that privacy commissioner Ada Chung Lai-ling is seeking to block the messaging app due to doxxing content targeting police and politicians. Co-founder of NFT renting protocol Rentable World emiliano.eth shared the group Tuesday morning on Twitter, calling out the "degenerate" community, or crypto obsessives that engage in high-risk trading. On June 7, Perekopsky met with Brazilian President Jair Bolsonaro, an avid user of the platform. According to the firm's VP, the main subject of the meeting was "freedom of expression." In the next window, choose the type of your channel. If you want your channel to be public, you need to develop a link for it. In the screenshot below, it’s ”/catmarketing.” If your selected link is unavailable, you’ll need to suggest another option. To delete a channel with over 1,000 subscribers, you need to contact user support
from us


Telegram Hello World
FROM American