2016-11-11 1 views
6

変数がNoneType型であるかどうかチェックしたいと思います。他のタイプのために我々は次のようなものを行うことができます。変数の型を決定するのはPythonではNoneTypeです

type([])==list 

しかしNoneTypeのために、この単純な方法はできません。つまり、type(None)==NoneTypeとは言えません。別の方法がありますか?そして、なぜこれはいくつかのタイプのために可能であり、他のタイプのためではありませんか?ありがとうございました。

+1

'x is None'を使用してください。どのような状況においても、NoneType型のNone以外のオブジェクトは決して存在しないので、型のチェックには何の利点もありません。 –

+1

私は、 'xはNone'の特別な場合を追加しないために、任意のx、yに対して' type(x)== y'を渡すことができると考えています。注意: 'x == None'を実行することもできます。 –

+0

@ZeroPiraeusあなたが通知されなかった場合の上記を参照してください。 –

答えて

10

NoneTypeグローバルスコープ内に自動的には存在しません。これは実際問題ではありません。

>>> NoneType = type(None) 
>>> x = None 
>>> type(x) == NoneType 
True 
>>> isinstance(x, NoneType) 
True 

いずれの場合も、タイプチェックを行うのは珍しいことです。むしろ、x is Noneをテストする必要があります。

+0

ありがとう、私はこのソリューションと@ JeanFrancoisFabreの解決策の両方が仕事をすると思います。そのうちの1つを他のもの(スピード、スタイルなど)よりも好むいくつかの理由がありますか? – splinter

+0

@スプリッター私が知っているわけではありません。 –

6

もちろんできます。

type(None)==None.__class__ 

True 
+0

これはきれいなソリューションのように聞こえる、ありがとう。私はこれがタイプ([])==リストアプローチの一般化であるかどうか疑問に思います。つまり、私はあなたのアプローチがどんなタイプの比較にも対処できると思います。 – splinter

関連する問題