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

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

в @staticmethod ?

36 ответов

44 просмотра

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

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
Не надо тебе передавать функцию. Тебе надо вызвать

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта