Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
2 / 1 / 1
Регистрация: 07.11.2022
Сообщений: 4

Реализация шаблонов

07.11.2022, 23:48. Показов 416. Ответов 0

Студворк — интернет-сервис помощи студентам
Надо сделать на Python что-то +- похожее на шаблоны в языке Wolfram

Есть класс my, наследован от tuple (я убрал ненужный код)

Python
1
2
3
4
5
6
7
8
9
class my(tuple):
 
    def __new__(cls, head, *args, _options: dict | None = None):
        self = tuple.__new__(cls, (head, *args))
 
        return self
 
    def __match__(pattern, obj):
        ...
Все выражения есть экземпляры этого класса.

Надо написать код метода __match__(pattern, obj), который, рассматривая данный объект как шаблон, говорит соответствует ли объект obj этому шаблону.
Есть объект (Blank,) который означает любое выражение.

то есть

(Some, 1, 2).__match__((Some, 1, 2)) вернет True
(Some, 1, 2).__match__((Some, (Blank,), 2)) вернет True
(Some, 1, 2).__match__((Some, 1, (Blank,))) вернет True
(Some, 1, 2).__match__((Some, 8, (Blank,))) вернет False

С этим проблем нет, проблемы появляются дальше.

Хотелось бы иметь именованные шаблоны, и чтобы __match__ возвращало не True/False, а словарь из имен шаблонов и выражений им соответствующих

Пусть такой именованный шаблон есть p = (Pattern, "имя", (Blank,)). Тогда, скажем, (Some, 1, 2).__match__((Some, p, 2)) вернет словарь {"имя": 1}

Другой пример, есть шаблон p = (Pattern, "x", (Plus, (Pattern, "a", (Blank)), 1)). Здесь x есть название шаблона, где к a прибавляется 1, на Wolfram это выглядело бы как x: a_ + 1.
Тогда (Some, 7, (Plus, t, 1)).__match__((Some, 7, p)) дало бы словарь {"x": (Plus, t, 1), "a": t}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.11.2022, 23:48
Ответы с готовыми решениями:

Как из шаблонов django обратиться к элементу на странице?
Доброго времени суток, объясню проблему на небольшом примере <div data="10"> <div> {{ value.filter(id=x) }} </div> ...

PyCharm при первом запуске нет выбора шаблонов
Добрый день, форумчане! Я начинающий в Python, установил Pycharm, однако при первоначальном запуске и создании проектов нет пункта...

Реализация шаблонов
Всем привет! Можно ли как-то реализовывать шаблонный класс в другом файле? то есть имеем заголовочный файл там задаём сам шаблонный класс...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.11.2022, 23:48
Помогаю со студенческими работами здесь

Реализация пользовательских шаблонов
Доброго дня. Стоит задача по реализации пользовательских шаблонов (создание, редактирование, сохранение) К примеру юзеру (когда заходит...

Реализация шаблонов underline_type и is_enum
Добрый вечер! Кто подскажет, как сделать шаблоны underline_type и is_enum? Смотрел type_traits, там используется, например, некая...

Реализация шаблонов свечных конфигураций
Всем привет! Есть задача реализовать шаблоны свечных конфигураций для тестирования. На входе у нас есть данные свечей с рынка:...

Реализация шаблонов класса в инлайн файле
Пытался написать шаблонны MyClass.h #pragma once #define MYCLASS template <typename T> class MyClass { public:

Реализация шаблонов класса в инлайн файле
Пытался написать шаблонный класс, реализуя как обычно объявление класса в h файле и определение элемент-функций в с++. Компилятор постоянно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru