Telegram Group & Telegram Channel
Если вы пишете много Python-кода, наверняка сталкивались с типичной задачей: определение класса с простым конструктором и базовыми методами вроде __repr__. Например:


class Server:
def __init__(self, ip, version=4):
self.ip = ip
self._version = version

def __repr__(self):
return '{klass}("{ip}", {version})'.format(
klass=type(self).__name__,
ip=self.ip,
version=self._version,
)


Это выглядит однообразно, но легко автоматизируется. Популярный пакет attrs позволяет избавиться от такого шаблонного кода:


from attrs import define, field

@define
class Server:
ip = field()
_version = field(default=4)

server = Server(ip='192.168.0.0.1', version=4)


Пакет attrs генерирует конструктор, метод __repr__, а также методы сравнения (__eq__, __lt__, и т.д.) — всё это минимальными усилиями.

Однако с появлением Python 3.7 разработчики получили встроенное решение для этой задачи — data classes. Это стандартный инструмент, который использует аннотации типов для автоматического создания тех же самых методов:


from dataclasses import dataclass

@dataclass
class InventoryItem:
name: str
unit_price: float
quantity_on_hand: int = 0

def total_cost(self) -> float:
return self.unit_price * self.quantity_on_hand


Почему стоит обратить внимание на data classes:
1. Чистый код: Конструкция читается просто и выглядит лаконично.
2. Поддержка стандартной библиотеки: Не нужно добавлять зависимости.
3. Типы и валидация: С аннотациями типов ваш код становится более понятным и безопасным.

attrs остаётся полезным инструментом, особенно если вам нужны более продвинутые возможности (например, валидация значений полей), но для большинства задач data classes — отличное решение прямо "из коробки".

👉@BookPython



tg-me.com/BookPython/3444
Create:
Last Update:

Если вы пишете много Python-кода, наверняка сталкивались с типичной задачей: определение класса с простым конструктором и базовыми методами вроде __repr__. Например:


class Server:
def __init__(self, ip, version=4):
self.ip = ip
self._version = version

def __repr__(self):
return '{klass}("{ip}", {version})'.format(
klass=type(self).__name__,
ip=self.ip,
version=self._version,
)


Это выглядит однообразно, но легко автоматизируется. Популярный пакет attrs позволяет избавиться от такого шаблонного кода:


from attrs import define, field

@define
class Server:
ip = field()
_version = field(default=4)

server = Server(ip='192.168.0.0.1', version=4)


Пакет attrs генерирует конструктор, метод __repr__, а также методы сравнения (__eq__, __lt__, и т.д.) — всё это минимальными усилиями.

Однако с появлением Python 3.7 разработчики получили встроенное решение для этой задачи — data classes. Это стандартный инструмент, который использует аннотации типов для автоматического создания тех же самых методов:


from dataclasses import dataclass

@dataclass
class InventoryItem:
name: str
unit_price: float
quantity_on_hand: int = 0

def total_cost(self) -> float:
return self.unit_price * self.quantity_on_hand


Почему стоит обратить внимание на data classes:
1. Чистый код: Конструкция читается просто и выглядит лаконично.
2. Поддержка стандартной библиотеки: Не нужно добавлять зависимости.
3. Типы и валидация: С аннотациями типов ваш код становится более понятным и безопасным.

attrs остаётся полезным инструментом, особенно если вам нужны более продвинутые возможности (например, валидация значений полей), но для большинства задач data classes — отличное решение прямо "из коробки".

👉@BookPython

BY Библиотека Python разработчика | Книги по питону


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/BookPython/3444

View MORE
Open in Telegram


Библиотека Python разработчика Telegram | DID YOU KNOW?

Date: |

However, analysts are positive on the stock now. “We have seen a huge downside movement in the stock due to the central electricity regulatory commission’s (CERC) order that seems to be negative from 2014-15 onwards but we cannot take a linear negative view on the stock and further downside movement on the stock is unlikely. Currently stock is underpriced. Investors can bet on it for a longer horizon," said Vivek Gupta, director research at CapitalVia Global Research.

Traders also expressed uncertainty about the situation with China Evergrande, as the indebted property company has not provided clarification about a key interest payment.In economic news, the Commerce Department reported an unexpected increase in U.S. new home sales in August.Crude oil prices climbed Friday and front-month WTI oil futures contracts saw gains for a fifth straight week amid tighter supplies. West Texas Intermediate Crude oil futures for November rose $0.68 or 0.9 percent at 73.98 a barrel. WTI Crude futures gained 2.8 percent for the week.

Библиотека Python разработчика from us


Telegram Библиотека Python разработчика | Книги по питону
FROM USA