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

Нормально ли создавать такой класс чтоб вычислять разницу дат или

деттаймов в целых днях, насколько я уместно применил магические меттоды и датакласс?
@dataclasses.dataclass
class DateFrameBound:
"""
Class to represent a bound for a date frame based on specific date.

Whether to include the day of a bound in an interval is specified
"""

bound: date
including: bool

def __lt__(self, other):
if not isinstance(other, DateFrameBound):
return NotImplemented
return self.bound < other.bound

def __sub__(self, other) -> timedelta:
if not isinstance(other, DateFrameBound):
return NotImplemented
days_delta = (self.bound - other.bound + timedelta(days=self.including + other.including - 1)).days
return timedelta(days=days_delta)

18 ответов

38 просмотров

ChatGPT: Да, такие классы можно создавать и использовать для вычисления разницы дат и деттаймов в целых днях. Вы действительно можете применить магические методы и датакласс хорошо, поскольку это позволит вам создавать удобные и читаемые для работы с датами и деттаймами. Однако, я хотел бы подчеркнуть, что лучше всего использовать временные шкалы, такие как ISO 8601, для более эффективного и легко читаемого кода. Эта система времени позволяет создавать простые и гибкие срезы для дат и деттаймов, а также обеспечивать согласованность между различными системами, основанными на временных шкалах. 🤔

Ghost
ChatGPT: Да, такие классы можно создавать и испол...

@cutwater неумесное использование chatgpt + паста

Ghost
ChatGPT: Да, такие классы можно создавать и испол...

RO 1d, ISO 8601 - это формат представления, к качеству кода не имеет отношения.

Что за bound и including и что они делают в атрибутах класса. Остальные операции просто пропущены или задумано так и оставить? И в чём смысл вообще?

ю

Dmitriy-Тiutiunnyk Автор вопроса

Они не нужны. Bound граница - поскольку это границы ренжа считай. А инклудинг, это включительный, как с математики включительный или нет. От этого зависит надо ли добавлять день границы в промежуток или нет . Условно говоря > и >=

Dmitriy Тiutiunnyk
Они не нужны. Bound граница - поскольку это границ...

Что значит "не нужны"? Параметры объекта инициализируются в ините объекта, а не класса.

Dmitriy-Тiutiunnyk Автор вопроса
evle
Что значит "не нужны"? Параметры объекта инициализ...

Как вообще можно нейминги поменять чтоб было более понятно

Dmitriy Тiutiunnyk
Как вообще можно нейминги поменять чтоб было более...

Ну, полезность такой обвязки вызывает у меня большие сомнения, без неё всё прекрасно работает, но не для конкретного примера а в целом - не вижу проблем с подходом.

Dmitriy-Тiutiunnyk Автор вопроса

А как без нее работать? Нет норм способа так отнимать дни

Dmitriy-Тiutiunnyk Автор вопроса
evle
Обычными таймдельтами.

она не учитывает включение и невключение, я ж в отнимании и так таймделтами оперирую

Dmitriy-Тiutiunnyk Автор вопроса

У меня кейс такой - юзер задаёт рендж из двух дат. Может юзать > , >= , Надо вы́числить разницу в целых днях. Для этого кейса норм?

Dmitriy Тiutiunnyk
У меня кейс такой - юзер задаёт рендж из двух дат....

Я б для рейнжа целиком делал, а не для каждой границы отдельно.

Dmitriy-Тiutiunnyk Автор вопроса
evle
Я б для рейнжа целиком делал, а не для каждой гран...

Ну так этот рендж надо ещё задать в зависимости от границ. Границы там вычисляются многими условиями if .... start_bound = DateFrameBound().. elif .... start_bound = ... И тд

Dmitriy-Тiutiunnyk Автор вопроса
evle
Я б для рейнжа целиком делал, а не для каждой гран...

Думаю прислушаться к твоему совету ,как-то так сделать, класс дейт рендж с такими атрибутами start_bound: date include_start_day: bool end_bound: date include_end_day: bool

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта