On Thu, May 13, 2021 at 7:44 PM Ethan Furman <et...@stoneleaf.us> 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

- Tal
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/URFRF634732GRICGLRPGJEJON2BYQZM4/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to