Пытаясь сделать простую хронологию, как я делал, я наткнулся на это странное поведение:
from datetime import datetime
def main():
delta_nows = datetime.now() - datetime.now()
delta_utcnows = datetime.utcnow() - datetime.utcnow()
delta_strps = datetime.strptime('2020-01-02', '%Y-%m-%d') - datetime.strptime('2020-01-01', '%Y-%m-%d')
delta_dts = datetime(1,1,2,0,0,0,0) - datetime(1,1,1,0,0,0,0)
delta_nows.total_seconds()
delta_utcnows.total_seconds()
delta_strps.total_seconds()
delta_dts.total_seconds()
if __name__ == '__main__':
main()
Пример Visual Studio 2019:
В приведенном выше коде только delta_dts
выводится как timedelta
(остальные выводятся как datetime
объекты), что означает, что intellisense не работает ни на одном из первых трех total_seconds()
вызовов.
Во время выполнения все вызовы работают, и четыре переменные действительно являются timedelta
объектами.
Я попытался перезапустить Visual Studio и компьютер, но поведение сохраняется. Это ошибка или я что-то упустил? Python Документы ясно говорят, что
timedelta = datetime1 - datetime2
, но Intellisense, похоже, не подхватывает косвенные datetime
объекты, вычитаемые (объекты, возвращаемые из функций кроме конструктора).
Такое поведение появляется только в Visual Studio 2019 и не зависит от версии Python 3.x (протестировано на 3.5 и 3.7). На VS2017 все переменные являются timedelta
объектами.