On 5/13/2021 1:39 PM, Tal Einat wrote:
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

>>> MISSING
<class '__main__.MISSING'>

I think a repr of just "MISSING", or maybe "dataclasses.MISSING" would be better.

Eric

_______________________________________________
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/EQZV3KZZQNBN6NQRIERUK5HOEAUW2DUJ/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to