Уж простите, лучше сформулировать вопрос я не могу. Не знаю, как называется такой паттерн...
Вот захотел я сделать свой класс, чтобы не засорять код проекта всякими таймдельтами:
from datetime import datetime, timedelta
class DT:
def __init__(self, filetime=None):
if filetime:
self.dt = datetime.strptime(str(filetime), '%Y%m%d%H%M')
else:
self.dt = datetime.now()
def __eq__(self, other):
return self.dt == other.dt
def plus_5_min(self) -> str:
self.dt += timedelta(minutes=5)
if __name__ == '__main__':
a = DT('202204061200')
b = DT('202204061155')
b.plus_5_min()
print(a == b)
c = DT('202204061155')
print(a == b.plus_5_min())
и вот какой вывод:
True
Traceback (most recent call last):
File "E:/Мой диск/Python/dt.py", line 24, in <module>
print(a == b.plus_5_min())
File "E:/Мой диск/Python/dt.py", line 12, in __eq__
return self.dt == other.dt
AttributeError: 'NoneType' object has no attribute 'dt'
Хочу, чтобы можно было выполнять сравнение, как в последней строке - прибавлять 5 минут и сравнивать 2 сущности в одной строке. Но метод plus_5_min() возвращает None, и такой номер не проходит. Как это обойти? Ведь во всяких orm пишут несколько методов друг за другом. Или это можно провернуть только со статическими или классовыми методами?