Русский
Открыть в Telegram

Пост ✈️ В Python dataclasses — это модуль, предоставляющий декоратор @dataclass, который автоматически генерирует шаблонный к…

15 декабря 2024
P
Pythoner
Фотография
✈️ В Python dataclasses — это модуль, предоставляющий декоратор @dataclass, который автоматически генерирует шаблонный код для классов, преимущественно предназначенных для хранения данных. Это упрощает создание классов с атрибутами, методами __init__, __repr__, __eq__ и другими, без необходимости писать их вручную. ➡️ Применение dataclasses позволяет сократить объем кода, улучшить его читаемость и уменьшить вероятность ошибок, связанных с ручным написанием шаблонного кода. Они особенно полезны для создания классов, представляющих структуры данных или объекты с простым набором атрибутов. ➡️ Вот пример использования dataclasses: from dataclasses import dataclass, field @dataclass(order=True) # order=True добавляет методы сравнения class Person: name: str age: int city: str = "Unknown" # Значение по умолчанию email: str = field(default="[email protected]", repr=False) # repr=False скрывает поле в __repr__ scores: list[int] = field(default_factory=list) # mutable default value person1 = Person("Alice", 30, "New York", scores=[100, 90]) person2 = Person("Bob", 25, "Los Angeles") person3 = Person("Charlie", 35, scores=[80, 85]) person4 = Person("Alice", 30, "New York", scores=[100, 90]) print(person1) # Вывод: Person(name='Alice', age=30, city='New York', scores=[100, 90]) print(person2) # Вывод: Person(name='Bob', age=25, city='Los Angeles', scores=[]) print(person3) # Вывод: Person(name='Charlie', age=35, city='Unknown', scores=[80, 85]) print(person1 == person4) # True print(person1 > person2) # True (сравнение по name, затем age) # Изменение атрибутов: person1.city = "San Francisco" person1.scores.append(95) print(person1) # Вывод: Person(name='Alice', age=30, city='San Francisco', scores=[100, 90, 95]) # Post-init processing @dataclass class InventoryItem: """Class for keeping track of an item in inventory.""" name: str unit_price: float quantity_on_hand: int = 0 def __post_init__(self): self.total_cost = self.unit_price * self.quantity_on_hand item = InventoryItem("Pen", 1.5, 50) print(item.total_cost) # 75.0 ⬆️ В этом примере показано создание dataclass Person с различными типами полей, включая значение по умолчанию, field для скрытия поля в __repr__ и default_factory для изменяемых значений по умолчанию. Демонстрируется вывод информации о dataclass с помощью print, сравнение объектов dataclass и изменение атрибутов. Также приведен пример использования __post_init__ для выполнения действий после инициализации dataclass, как, например, вычисление total_cost в InventoryItem. order=True позволяет сравнивать экземпляры dataclass. 🐍Pythoner
24 · 1.7K ·

Рядом в ленте

PPythoner🐍Разбор Что возвращает метод строки find()? Самый быстрый способ это узнать — заглянуть в документацию Python. Согласно официальной документации, если подстрокаPPythoner✈️ В Python BeautifulSoup4 (bs4) — это мощная библиотека для парсинга HTML и XML документов. Она предоставляет удобный интерфейс для навигации, поиска и модифик
это сообщение
PPythoner✈️ В Python FastAPI — это современный, высокопроизводительный веб-фреймворк для создания API. Он основан на стандартах OpenAPI и JSON Schema, что обеспечивает аPPythoner✈️ В Python модуль `difflib` — это мощный инструмент для сравнения последовательностей, таких как строки, списки и другие итерируемые объекты. Он предоставляет

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем