2017-11-22 9 views
0

それはNone singletoneを参照している場合NoneTypeための変数をチェックしているテストするcommom方法で変数を比較する:適切な方法はなし

このアプローチは応じ Noneをチェックするための唯一の方法として推奨され
test_var is None 

PEP-8へ:なしなどのシングルトンへ

比較は常にして行われるべきであるか 等価演算子は、決してないではありません。

が、時々私は、さまざまなソースで次のテストを見つける:

isinstance(test, type(None)) 

この方法ではOKに見えますが、シンプルで読みやすい建設がisinstanceに置き換えてもよいなぜ私は非常に把握することはできません。それはいくつかの場合にはより有用なのでしょうか、あるいはcodestyleに言及されるかもしれませんか?

UPD:isinstanceでチェックのみNoneType私は(今のところ)本当に役に立つ:

isinstance(None, (NoneType, str, float)) 
+1

いくつかのプログラマーがエラーメッセージで 'NoneType'を見たように聞こえて、実際に問題を理解することなくテストすることに決めました。メリットはありません。 – user2357112

+1

https://media1.tenor.com/images/fb50f8dd802894fce6bdafef59ddd84d/tenor.gif –

+0

あなたは 'type(test)== None .__ class__'を実行することもできます。要するに、開発者は可能な限り解決策を自由に得ることができますが、それは常にその背後に理由があることを意味するわけではありません。 –

答えて

4

いいえ、その構文を使用する決して理由があります。

NoneTypeをサブクラス化することはできません。このテストに合格する唯一のオブジェクトは、Noneシングルトンです。その行はおそらくこれを知らない人が書いたもので、サブクラスもテストする必要があると思っていました。