「なんでも無い」の子供


MHI/3.0 - $ [Python] なぜ、None は is で判定しなければいけないのか

だって、None は一応シングルトンだけれども、別に None を継承したクラスのインスタンスがあったっていいだろうし (根拠はないので、よくないかも)



ハッ!? そういえば、Noneって継承できるのか!?


・・・いや、多分出来ないはずだ。だが、万が一!?


Python3.1

>>> type(None)
<class 'NoneType'>
>>> NoneType
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'NoneType' is not defined
>>> class N(type(None)):pass
...
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: type 'NoneType' is not an acceptable base type



Python2.6

>>> type(None)
<type 'NoneType'>
>>> NoneType
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'NoneType' is not defined
>>> class N(type(None)):pass
...
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: Error when calling the metaclass bases
    type 'NoneType' is not an acceptable base type



・・・やっぱりそうだよね。