I would like to create a class that inherites from None
.
Tried this:
class InvalidKeyNone(None):
pass
but that giv
There's no way to do it, at least definitely not until you do some unreadable black magic.
You should probably use exceptions.
None
is a constant, the sole value of types.NoneType
(for v2.7, for v3.x)
Anyway, when you try to inherit from types.NoneType
from types import NoneType
class InvalidKeyNone(NoneType):
pass
foo = InvalidKeyNone()
print(type(foo))
you'll get this error
Python 2
TypeError: Error when calling the metaclass bases type 'NoneType' is not an acceptable base type
Python 3
ImportError: cannot import name 'NoneType'
in short, you cannot inherit from NoneType
Anyway, why would want a class to inherit NoneType
?
Subclassing None does not make sense, since it is a singleton and There Can Be Only One. You say you want a class with the same behaviour, but None does not have any behaviour!
If what you really want is a unique placeholder that you can return from a function to indicate a special case then simplest way to do this is to create a unique instance of object:
InvalidKey = object()
result = doSomething()
if result is InvalidKey:
...