[Zope-dev] Constant values defined in interfaces
Gary Poster
gary.poster at gmail.com
Fri Apr 3 14:23:55 EDT 2009
On Apr 3, 2009, at 2:14 PM, Chris Rossi wrote:
>
>
> On Fri, Apr 3, 2009 at 1:55 PM, Gary Poster <gary.poster at gmail.com>
> wrote:
>
> How would that be a win for you (or anybody else) over just putting
> the constant in the interfaces module?
>
> Standard practice seems to favor putting several interfaces in a
> single "interfaces" module, so just putting the constants in the
> module doesn't make it explicit that these constants go with a
> particular interface. Putting them on the interface itself makes
> the relationship plain.
True. FWIW, I usually do that in the text of the interface if I need
to, but I absolutely see where you are coming from.
> If it is in the interface, that implies we need to "implement" it
> someplace--the constant will be defined in the interface and in the
> implementation? Or we would offer automation to copy the values
> over from the interface to objects that implement the interface?
>
>
> Thanks for bringing that up. I hadn't considered that. In
> languages with built-in interface support, classes generally
> inherent constants from the interface, so automatically copying the
> values over would seem to make sense. Although it's also considered
> best practice in those languages to refer to the constants by their
> interface anyway, so one could argue that such a step could be
> omitted. Zope's implementation of interfaces is unique among
> implementations I know about, in allowing programmers to mark live
> objects with an interface, which would introduce an interesting edge
> case with regards to copying constants over. I'd say if the
> implementation gets too polluted with edge cases, it's probably not
> worth it.
Agree.
> Using descriptors, the results could be both static and immutable.
>
> Mostly static and immutable, anyway. :-) In Python, there's almost
> always a way around absolutes like that unless you are working with
> something in which the constraint has been coded in C.
>
> Right, but since we have descriptors, why not use them? Maybe I
> should have used the Colbertian "immutablish".
:-) Yeah, ok.
> I don't have my heart set on this. I found a use case today and was
> just thinking about ways to satisfy it.
If there's a reasonable story for the connection between interfaces
and the objects providing them (that is, what we talked about above),
then I wouldn't object. I don't know what that reasonable story might
be, though.
Gary
More information about the Zope-Dev
mailing list