[Tutor] SENTINEL, & more

Eike Welk eike.welk at gmx.net
Sun May 30 00:36:24 CEST 2010


Hey Denis!


On Saturday May 29 2010 10:29:43 spir ☣ wrote:
> I'll try to clarify the purpose and use of sentinels with an example.
>  Please, advanced programmers correct me. A point is that, in languages
>  like python, sentinels are under-used, because everybody tends to une None
>  instead, or as all-purpose sentinel.
> 
> Imagine you're designing a kind of database of books; with a user interface
>  to enter new data. What happens when an author is unknown? A proper way, I
>  guess, to cope with this case, is to define a sentinel object, eg:
>  UNKNOWN_AUTHOR = Object()
> There are many ways to define a sentinel; one could have defined "=0" or
>  "=False" or whatever. But this choice is simple, clear, and secure because
>  a custom object in python will only compare equal to itself -- by default.
>  Sentinels are commonly written upercase because they are constant,
>  predefined, elements.

I waited for a thread like this to appear, because I have a quirky, but IMHO 
elegant, solution for those kinds of variables:

class EnumMeta(type):
    def __repr__(self):
        return self.__name__
    
class Enum(object):
    __metaclass__ = EnumMeta


Objects are created by inheriting from the Enum class. (Not by instantiating 
it.)

    >>> class EAST(Enum): pass
    >>> class WEST(Enum): pass
    >>> class NORTH(Enum): pass
    >>> class SOUTH(Enum): pass


The objects know their name, and when printed their name is printed. In this 
respect they behave similarly to None.

    >>> print NORTH, SOUTH, EAST, WEST
    NORTH SOUTH EAST WEST


I call the class Enum, but this is certainly the wrong term since the values 
are not enumerated. But is Sentinel the right term for something like this? I 
thought a sentinel is a soldier who guards something. Hello English native 
speakers! What is a good name? 



Eike.

P.S. By the way Denis, an earlier thread from you on the subject got me 
thinking about it. 



More information about the Tutor mailing list