Как проверить, является ли объект экземпляром datetime.time - PullRequest
0 голосов
/ 25 сентября 2019
from datetime import datetime as datetime
print(type(datetime.now().time())) #outputs <class 'datetime.time'>
print(type(datetime.time))         #outputs <class 'method_descriptor'>

Я думаю, что этот абстрактный код говорит само за себя.Почему оператор типа возвращает что-то, что не является типом?

Особенно я не понимаю, почему я получаю другой результат, если я делаю:

print(type(type(datetime.now().time()))) #returns type

и

isinstance(datetime.now().time(), datetime.time)

TypeError: isinstance () arg 2 должен быть типом или кортежем типов

Что я могу сделать, если я хочу проверить, является ли объект того же типа, что и объект .time ()метод с даты и времени

1 Ответ

2 голосов
/ 25 сентября 2019

Вы смущены, потому что здесь есть две вещи, называемые datetime;модуль и класс в этом модуле.Вы импортировали только класс, а не родительский модуль.

Класс datetime.datetime определяет метод экземпляра time(), который преобразует объект в экземпляр класса datetime.time.

Все будет яснее, если вы импортируете модуль, а не класс:

>>> import datetime
>>> print(type(datetime.datetime.now().time()))
<class 'datetime.time'>
>>> print(type(datetime.time))
<class 'type'>

(Обратите также внимание на то, что из вашего упоминания о method_descriptor вы должны использовать Python 2.7, который очень стар. Пожалуйста, обновитесь до Python 3, где результат type(datetime.datetime.now().time) дает builtin_function_or_method.)

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