[Zope-dev] Constant values defined in interfaces

Chris McDonough chrism at plope.com
Sat Apr 4 18:04:24 EDT 2009


Using an interface class for a constant "container" would often be handy but it
might be an inappropriate use of interface classes.  FTR, I do often put
constants in an "interfaces.py" module at module scope (if there are more than
one related, sometimes in a dictionary or within a non-interface class
statement) in order to not feel I need to create some "constants.py" module.
Maybe we could just agree that doing so isn't some sort of violation of intent?

Chris Rossi wrote:
> On Fri, Apr 3, 2009 at 7:21 PM, Wichert Akkerman <wichert at wiggy.net> wrote:
> 
>> Previously Chris Rossi wrote:
>>> I was wondering if the Zope collective had given any consideration to
>>> allowing constants to be defined in interfaces.  To be clear, these are
>>> constant values that make up the protocol defined by the interface.  Just
>> to
>>> have a concrete example, let's say we're modeling an http response:
>>>
>>> class IHttpResponse(Interface):
>>>     """Models an HTTP 1.1 response.
>>>     """
>>>     status = Attribute("HTTP status code for this response.")
>>>
>>> It might be useful to include in our interface spec what some proper
>> values
>>> for status code might be and make them available to applications as
>> static
>>> constants on the interface class.  A naive implementer might do something
>>> like this:
>>>
>>> class IHttpResponse(Interface):
>>>     """Models an HTTP 1.1 response.
>>>     """
>>>     HTTP_OK = "200 Ok"
>>>     HTTP_NOT_FOUND = "404 Not Found"
>>>
>>>     status = Attribute("HTTP status code for this response.")
>> This looks like a poor man's enum. I'ld prefer to have a proper enum
>> like thing.
>>
> 
> I'm sure you can think of a lot of uses of constant values where an enum
> wouldn't be appropriate.  I don't know that I'd even use an enum in this
> made up example.  Some use cases might be covered by an enum, sure, but
> that's not really the point here.
> 
> Thanks,
> Chris
> 
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Zope-Dev maillist  -  Zope-Dev at zope.org
> http://mail.zope.org/mailman/listinfo/zope-dev
> **  No cross posts or HTML encoding!  **
> (Related lists - 
>  http://mail.zope.org/mailman/listinfo/zope-announce
>  http://mail.zope.org/mailman/listinfo/zope )



More information about the Zope-Dev mailing list