キーワードは、「同一性と同値性」「シングルトン(Singleton)」です!
None = Python版null ですが、
コーディング規約のデファクトスタンダードになっているPEP8サマは、
「Noneとの比較には is を使うべきで、絶対に等値演算子を使ってはならない」としています。
なぜなんでしょうか。
PEP8サマによると、Noneとの比較は、
「==」ではなく「is」
「!=」ではなく「is not」が推奨とのこと#python pic.twitter.com/AlzO4hGdDe— code.Taniii /*プログラミング垢*/ (@codeTaniii) July 12, 2022
同一性と同値性
簡単にいうと、
「同一性」は、出所が同じ/同じ実体を参照している
つまるところ、同じインスタンスということです。
「同値性」は、論理的/数学的に等しい
その場での判断なので、出自は関係ありません。
シングルトン(Singleton)
シングルトンは、1つのクラスに対して、1つのインスタンスのみを生成する設計のこと
Noneのようなシングルトンと比較する場合は…
そもそも、Noneはシングルトンなので、1つのインスタンスしか存在しえないということです。
Noneとされたものはすべて同じインスタンスなので、「xxx is None」で評価可能になります。
「同一性」で評価できるなら、「同一性」で評価したいところです。
なぜならば、「同値性」の評価は、人為的な定義しだいで変化の余地が多分にあるからです。
たとえば、False == None とか、0 == None が、どのような動作をするかは、若干の不安が残ります。(というか、Qiita上の「早見表」や「チートシート」を見たくなります)
Noneを「同一性」で評価すれば、こんな心配とは無縁です。
シングルトン (Singleton) …
1つのクラスに対して、1つのインスタンスのみを生成する設計のことNoneはシングルトンなので、1つのインスタンスしか存在しえない。"None"とされたものはすべて同じインスタンスなので、「xxx is None」で評価可能。#python #オブジェクト指向
— code.Taniii /*プログラミング垢*/ (@codeTaniii) July 12, 2022
ps.
ひとこと感想
今回は、「シングルトン」について調べたのが急流となって、全体がよく分かりました~
コメント