Datetime "fromtimestamp ()" игнорирует наследование, если часовой пояс не равен None - PullRequest
0 голосов
/ 30 ноября 2018

Я создал класс, унаследованный от datetime.datetime.

При создании нового экземпляра с использованием метода класса fromtimestamp это работает, за исключением , если я предоставлю timezone объект.В таком случае возвращаемый объект имеет базовый тип datetime.

import time
from datetime import datetime, timezone

class MyDatetime(datetime):
    pass

MyDatetime.fromtimestamp(time.time())
# MyDatetime(2018, 11, 30, 18, 8, 36, 418105)
# <class '__main__.MyDatetime'>

MyDatetime.fromtimestamp(time.time(), tz=timezone.utc)
# datetime.datetime(2018, 11, 30, 17, 8, 50, 667385, tzinfo=datetime.timezone.utc)
# <class 'datetime.datetime'>

Это кажется удивительным.Я не вижу упоминаний о таком странном поведении в документации, я что-то упустил или это ошибка Python?

1 Ответ

0 голосов
/ 02 декабря 2018

Перекрестная публикация из Python Bug Tracker

Это побочный эффект арифметической операции с датой, выполняемой при настройке часового пояса.

  • при передаче информации tz в datetime она вызывает tz.fromutc ()
  • с последующей арифметикой datetime здесь
  • , что в конечном итоге приводит к созданию новогообъект datetime здесь

Я не уверен, ожидаемое ли это поведение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...