2013-04-05 28 views
5

Próbuję przekonwertować niektóre kodu od 2 do 3, a po prosty skryptDlaczego otrzymuję komunikat o błędzie w Pythonie "nie można zaimportować nazwy NoneType"?

import types 
from types import NoneType 

Wyniki w

ImportError: cannot import name NoneType

Jak mogę przekonwertować wyżej od 2 do 3?

+0

Ponieważ istnieje tylko jedna instancja 'NoneType',' x is None' jest dokładnie równa 'isinstance (x, NoneType)'. Jeśli sprawdzasz typ przed 'None', coś jest nie tak. –

+0

@GarethLatty Przydaje się do zastosowania w tupce. 'isinstance (json_compatible_basic_type_expected, (int, float, str, NoneType))' – Ekevoo

Odpowiedz

8

Nie ma już odniesienia NoneType w modułach types. Powinieneś sprawdzić tożsamość bezpośrednio pod numerem None, tj. obj is None. Alternatywnym sposobem, jeśli naprawdę potrzebujemy NoneType, byłoby dostać go za pomocą:

NoneType = type(None) 

To jest rzeczywiście dokładnie taki sam sposób types.NoneType zostało zdefiniowane wcześniej, zanim został usunięty na November 28th, 2007.

Na marginesie, nie trzeba importować modułu, aby móc użyć składni from .. import, więc można upuścić linię import types jeśli nie używać odniesienie modułu nigdzie indziej.