2017-01-30 3 views
-1

Например, глядя на тип None, мы можем видеть, что он имеет NoneType:Как получить доступ к типу NoneType?

>>> type(None) 
NoneType 

Однако NameError результаты при попытке получить доступ к NoneType:

>>> NoneType 
NameError: name 'NoneType' is not defined 

Как можно NoneType получить доступ ?

+0

Интересный [Нет одноэлементно] (https://docs.python.org /3.6/c-api/none.html#the-none-object) – wwii

+1

зачем он вам нужен? – furas

+0

на Python 3 это '<класс 'NoneType'>' – furas

ответ

3

Ну, в Python 2, вы можете импортировать его из types модуля:

from types import NoneType 

, но это на самом деле не реализуется там или что-нибудь. types.py как раз NoneType = type(None). Вы могли бы просто использовать type(None) напрямую.

В Python 3 имя types.NoneType отсутствует. Просто используйте type(None).


Если type(None) показывает NoneType для вас, а не что-то вроде <class 'NoneType'>, вы, вероятно, на какой-то нестандартной настройке интерпретатора, такие как IPython. Обычно это отображалось как-то вроде <class 'NoneType'>, тем более ясно, что вы не можете просто ввести NoneType и получить тип.

+0

Может также сделать тип (obj) == type (None), а не сложность дополнительного кода? – hungryWolf

+0

user2357112, любая идея о том, как импортировать его в Python3? Я получаю ошибку импорта в Python3: 'ИмпортError: не могу импортировать имя 'NoneType'' @ user5676973 Мате вам не хватает точки. – Greg

+0

Я, ладно, мне не хватает смысла, не могли бы вы объяснить? мой ответ кажется прекрасным. – hungryWolf

0

Как было предложено @dawg в комментариях, вы можете сделать

if (type(some_object).__name__ == "NoneType"): 
    # Do some 
    pass 

Вы также можете сделать

NoneType = type(None)  
isinstance(some_object, NoneType) 
Смежные вопросы