2013-11-19 3 views
0

Я следующий код:Почему результат подкласса datetime минус timedelta для объекта datetime?

from datetime import datetime, timedelta 


class MyDate(datetime): 
     pass 

d = MyDate.now() 
t = timedelta(1, 1, 1) 
print type(d) 
print type(d - t) 

Выход следующий:

<class '__main__.MyDate'> 
<type 'datetime.datetime'> 

Так что теперь на мой вопрос, почему подкласс минус timedelta результат в супер классе?

Кроме того, есть обходное решение для этого, где мне не нужно инкапсулировать объект datetime и перенаправить все методы datetime?

ответ

3

Подкласс класса MyDate не отменяет функцию вычитания __sub__(), поэтому наследует функцию от базового класса, который возвращает экземпляр базового класса.

Обходной путь для чего? Чего вы пытаетесь достичь путем подкласса datetime?

+0

Я делаю следующее 'class Date (datetime.datetime, JSONSerialize)', поэтому у меня есть интерфейс для сериализации JSON и, кроме того, я хочу использовать pytz для работы с часовыми поясами. Но pytz использует timedelta для исправления временной метки, а затем я теряю свой интерфейс, когда я конвертирую из одной TZ в другую. Поэтому я искал решение, в котором мне не нужно писать 10 методов-оболочек для datetime. –

+0

Я не вижу способ обернуть хотя бы '__add__' и' __sub__', если вы хотите манипулировать вашим подклассом с помощью объектов timedelta' – jonrsharpe

 Смежные вопросы

  • Нет связанных вопросов^_^