On Thu, May 13, 2021 at 7:44 PM Ethan Furman <[email protected]> wrote:
Consider me complaining. ;-)
+1
An actual Sentinel class would be helpful:
>>> class Sentinel:
... def __init__(self, repr):
... self.repr = repr
... def __repr__(self):
... return self.repr
...
>>> MISSING = Sentinel('MISSING')
>>> MISSING
MISSING
>>> implicit = Sentinel('<implicit>')
>>> implicit
<implicit>
Here is my suggestion (also posted on the related bpo-44123), which is
also simple, ensures a single instance is used, even considering
multi-threading and pickling, and has a better repr:
class Sentinel:
def __new__(cls, *args, **kwargs):
raise TypeError(f'{cls.__qualname__} cannot be instantiated')
class MISSING(Sentinel):
pass