170 похожих чатов

Как функцию, обёрнутую в @classmethod, передать в другую функцию, обёрнутую

в @staticmethod ?

36 ответов

19 просмотров

Избавиться от обеих, сделать нормальные методы или обычные функции

garrip91- Автор вопроса
Tishka17
Избавиться от обеих, сделать нормальные методы или...

Задача сама такая. Я бы с радостью. Я вообще считаю, что классы нужны для того, чтобы работать с их экземплярами, а посему @classmethod и @staticmethod - это абсолютно ненужная байда

garrip91- Автор вопроса
Tishka17
Тогда исходную формулировку бы

Реализовать класс «Дата», функция-конструктор которого должна принимать дату в виде строки формата «день-месяц-год». В рамках класса реализовать два метода. Первый — с декоратором @classmethod. Он должен извлекать число, месяц, год и преобразовывать их тип к типу «Число». Второй — с декоратором @staticmethod, должен проводить валидацию числа, месяца и года (например, месяц — от 1 до 12). Проверить работу полученной структуры на реальных данных.

garrip91
Задача сама такая. Я бы с радостью. Я вообще счита...

Ну, не совсем ненужная, но очень специфическая и часто используемая не к месту.

garrip91- Автор вопроса
Tishka17
Не вижу чтобы надо было их передавать

У меня вот сейчас такой код получился: https://dpaste.org/CGOMm Откуда второй метод должен получать число, чтобы работать с ним?

garrip91
У меня вот сейчас такой код получился: https://dpa...

Из параметра. Кстати, тут статикметод хоть и с натяжкой, но уместен. Что хотели в части с классметодом - ч так и не понял.

garrip91- Автор вопроса
evle
Из параметра. Кстати, тут статикметод хоть и с нат...

Вот именно, что задача охинейская. Мне 1 тимлид сказал, что эти задачи просто на проверку знаний. На практике не всё оттуда надо будет

garrip91- Автор вопроса
evle
Из параметра. Кстати, тут статикметод хоть и с нат...

Можно пример кода как мне из параметра это получить?

garrip91
Можно пример кода как мне из параметра это получит...

@staticmethod def is_month_valid(month: int): return month in range(1, 13)

garrip91- Автор вопроса
evle
@staticmethod def is_month_valid(month: int): ...

Ну а month-то мы что? Повторно должны указывать? Ведь, мы же изначально строку передаём экземпляру класса...

garrip91
Вот именно, что задача охинейская. Мне 1 тимлид ск...

Просто на классметод можно было вполне нормальную сделать. И вероятно, так и задумывали, но не смогли сформулировать. Это при условии что ты оригинальное условие дал, а не вольный пересказ.

garrip91
Ну а month-то мы что? Повторно должны указывать? В...

Нет никакого экземпляра класса в случае статикметода. Он на случай, если нам нужна функция, неразрывно связанная с классом по смыслу, но при этом не имеющая дела с его объектами. Случай редкий и часто уместнее всего это делать отдельной функцией вне класса, а не статикметодом.

garrip91- Автор вопроса
evle
Нет никакого экземпляра класса в случае статикмето...

Блин. Ну условие задачи теперь такое. Ну так, как всё-таки сделать это извращение: то есть, как функцию, обёрнутую в @classmethod, передать в другую функцию, обёрнутую в @staticmethod ?

garrip91
Ну а month-то мы что? Повторно должны указывать? В...

В данном случае у тебя этим статикметодом может пользоваться сам конструктор при сборке даты, либо ты можешь зарание провалидировать что-то снаружи, чтобы проверить, соответствует ли какое-то число ограничениям.

garrip91
Блин. Ну условие задачи теперь такое. Ну так, как ...

Ты текст условия привёл как есть? В том что ты копировал раньше - ничего такого не было.

И где ты тут высосал из пальца передачу одной функции в другую?

garrip91- Автор вопроса
evle
И где ты тут высосал из пальца передачу одной функ...

Ну так, это же логически понятно. Зачем дублировать то, что мы должны получить?

garrip91
Ну так, это же логически понятно. Зачем дублироват...

Нет, это логически бессмысленно. Прочитай условие нормально и определи, чего от тебя хотят.

garrip91- Автор вопроса
evle
Нет, это логически бессмысленно. Прочитай условие ...

То есть, всё-таки дублировать придётся?

garrip91- Автор вопроса
evle
Дублировать что?

То, что мы передаём сначала классу (то есть, дату в виде строки). Кстати, классметод над ним уже определённую работу проводит. То есть, нужно ту же работу дублировать в статикметоде???

garrip91- Автор вопроса
Tishka17
Какую работу?

Вот эту: @classmethod def get_day_month_year(cls, obj): return [int(n) for n in obj.day_month_year.split("-")] То есть, преобразование строки в список чисел

garrip91
Вот эту: @classmethod def get_day_month_year(c...

И в чем проблема вызвать этот метод?

garrip91- Автор вопроса
Tishka17
И в чем проблема вызвать этот метод?

Ну так, и как мне этот метод вызвать, то есть, передать статик-методу? Можно, хотя бы, пример кода?

garrip91- Автор вопроса
Tishka17
Так вызвать или передать?

Вот мой текущий вариант кода (вопросительные знаки для того, чтобы мне помогли): https://dpaste.org/1w05t Хочу функцию get_day_month_year передать функции get_valid_date ДЛЯ ДАЛЬНЕЙШЕЙ РАБОТЫ С НЕЙ Как мне это сделать?

garrip91
Вот мой текущий вариант кода (вопросительные знаки...

Господи, ты отличаешь слова вызвать и передать?

garrip91
Вот мой текущий вариант кода (вопросительные знаки...

Где вообще в тексте задачи указано, что один метод нужно передать в другой?

garrip91
передать

Не надо тебе передавать функцию. Тебе надо вызвать

Tishka17
Не надо тебе передавать функцию. Тебе надо вызвать

Ой, там даже вызывать не очень надо. По крайней мере в таком виде.

Похожие вопросы

Обсуждают сегодня

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Заметил в ghci 9.4.8: > :t (<*>) @((->)_) (<*>) @((->)_) :: (w -> (a -> b)) -> (w -> a) -> w -> b Разве не должно (w -> (a -> b)) быть записано как (w -> a -> b)? Это баг, ил...
Михаил
13
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Any electron dev here?
Sayanth Tezro
12
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
так это может кто что знает или использует что-то как макбук только не макбук? на 13…14 дюймов
Michael
9
Карта сайта