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 ответов

11 просмотров

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

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

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

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
короче сгенерила мне эта штука код на ассемблере: struc string val { common local .value dq .value .value: if ~val eq db val end if db 0 } fo...
Vi Chapmann Chapmann
12
Всем привет! Массив вводится с клавиатуры, кол-во элементов неизвестно, поэтому я указал arr db 100 dup(?) С нахождением максимума проблем нет, а вот минимум почему-то всегд...
En Vind Av Sorg
11
#include <stdio.h> int main(void) { int n; scanf("%d", &n); int digits1[n] = {0}; int digits2[n] = {0}; я не могу таким образом заранее массив нулями заполнить?
Linus
12
в сях есть множество как в питоне? для удаление дубликатов
Linus
25
я про форму записи. смысл указывать что 8 байтный регистр 8 байт?
Aiwan \ (•◡•) / _bot
10
читать файл максимально быстро? странный вопрос))
zamtmn
53
Вроде бы вопрос уже заезжанный, но тем не менее У меня есть функция menu() которая выводит набор возможных действий, а затем спрашивает у пользователя что он хотел бы сделать....
David Golovatin
3
Кто создает тут ботов для телеграмм групп ?
Antskup
8
а как бы вылезти из ИО, что то типа IO -> Ether или в какую сторону смотреть ? что то туплю
Fedor
14
Карта сайта