💀
Второй курс РПО
Разработка программных модулей
Разработка программных модулей
  • Модели разработки
  • Ошибки и отладка программ
  • Средства разработки алгоритмов
    • Основные принципы и стадии тестирования
  • Сложностные классы
  • Эмуляторы операционных систем
  • Сложность сортировки
  • Уровни тестирования
  • Задание №1
  • Регрессионное тестирование
  • Тестирование «белым ящиком»
  • Как делать оценку сложности?
  • Алгоритмы и сложность
  • Тестирование "белым ящиком" №2
  • Сложность алгоритмов
  • Тестирование "белым ящиком" №3
  • Тестирование "Чёрным ящиком»" №1
  • Тестирование "Черным ящиком" №2
  • Оценка сложности эвристических алгоритмов
  • Принципы ООП
  • Тестирование "Черным ящиком" №3
  • КТ - В3
  • Модульное тестирование
    • С кодами
  • Модульное тестирование
  • Абстрактные классы и интерфейсы в Python
  • Структуры в Python по аналогии с C++
    • Диалоги гениев
  • Делегаты в Python
    • Ещё более не смешные диалоги
  • Регулярные выражения в Python от простого к сложному
  • Python: Коллекции
  • Параметризованные классы (шаблоны)
  • Указатели и операции со списками в Python
  • Интеграционное тестирование
  • Работа с классами. Перегрузка методов
  • Определение операций в классе.
  • Создание наследованных классов
  • Интеграционное тестирование
  • Работа с объектами через интерфейсы
  • Использование стандартных интерфейсов
  • Работа с типом данных "Структура"
  • Коллекции. Параметризованные классы
  • Использование регулярных выражений
  • Операции со списками
  • Что такое паттерны проектирования?
  • Шпаргалка по шаблонам проектирования
    • [Habr] Шпаргалка
  • UML-диаграммы проектирования
  • Использование основных шаблонов.
  • Использование каких то там шаблонов
  • 15-я Практическая
  • 16-я Практическая
  • Graphviz Online
  • 17-я Практическая
  • Введение в теорию программирования: Объектно-ориентированный подход
  • Документирование софта и стандарты
  • C# Ввод и вывод
  • Оптимизация кода: просто о главном
  • Автоматизация разработки технической документации
  • Автоматизированное документирование и первичные данные
  • ADO.NET что это?
Powered by GitBook
On this page
  • Пример 1: Простая структура для хранения координат (dataclass)
  • Код
  • Объяснение
  • Тестирование
  • Пример 2: Структура для студента (namedtuple)
  • Код
  • Объяснение
  • Тестирование
  • Пример 3: Структура для товара (dataclass с вычислениями)
  • Код
  • Объяснение
  • Тестирование
  • Выводы

Работа с типом данных "Структура"

31.01.2025 - Практическая работа №10. Работа с типом данных "Структура"

В Python структуры можно реализовать с помощью dataclass или namedtuple. Они позволяют удобно хранить связанные данные в одном объекте, как в C-подобных языках.


Пример 1: Простая структура для хранения координат (dataclass)

Код

from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int

Объяснение

  • @dataclass автоматически создаёт методы __init__, __repr__ и другие.

  • x и y — это координаты точки.

Тестирование

p1 = Point(3, 4)
print(p1)  # Ожидаем: Point(x=3, y=4)

Пример 2: Структура для студента (namedtuple)

Код

from collections import namedtuple

Student = namedtuple("Student", ["name", "age", "grade"])

s1 = Student("Иван", 20, "A")

Объяснение

  • namedtuple — это лёгкая структура, похожая на dataclass.

  • Student — структура с полями name, age, grade.

  • Доступ к полям идёт через s1.name, s1.age.

Тестирование

print(s1.name)  # Ожидаем: Иван
print(s1.age)   # Ожидаем: 20
print(s1.grade) # Ожидаем: A

Пример 3: Структура для товара (dataclass с вычислениями)

Код

from dataclasses import dataclass

@dataclass
class Product:
    name: str
    price: float
    quantity: int

    def total_price(self):
        return self.price * self.quantity

Объяснение

  • Product — структура для хранения информации о товаре.

  • Метод total_price() считает полную стоимость (цена * количество).

Тестирование

apple = Product("Яблоко", 5.0, 10)
print(apple.total_price())  # Ожидаем: 50.0

Выводы

  1. dataclass делает структуры удобными и автоматически создаёт методы

  2. namedtuple — лёгкий аналог, но неизменяемый

  3. Структуры помогают удобно хранить данные в одном объекте

PreviousИспользование стандартных интерфейсовNextКоллекции. Параметризованные классы

Last updated 3 months ago