[Zope-dev] Anyone want to do Google Summer of code mentoring for PSF?
Martijn Faassen
faassen at startifact.com
Mon Mar 21 09:40:41 EDT 2011
Hi there,
On 03/20/2011 04:00 PM, Hanno Schlichting wrote:
> Taking one of the examples of grokcore.component, I think there's a
> lot that can be made simpler:
>
> import grokcore.component
> from zope.i18n.interfaces import ITranslationDomain
>
> class HelloWorldTranslationDomain(grokcore.component.GlobalUtility):
> grokcore.component.implements(ITranslationDomain)
> grokcore.component.name('helloworld')
>
> Based on my Pyramid exposure, I'd write this as something like:
>
> from something import utility
> from zope.i18n.interfaces import ITranslationDomain
>
> @utility(ITranslationDomain, name='helloworld')
> class HelloWorldTranslationDomain(object):
> pass
It's interesting to consider inheritance rules here. What if you
subclass from HelloWorldTranslationDomain? What happens to name and the
interface that the utility is provided under?
I'm not saying I know the right rules for inheritance in all cases, or
that grokcore.component is sane here, but I know in some cases having
directive values inherit is pretty neat, and in some cases it isn't. I
imagine registration can always be explicit, however.
Note also that if we're simply talking spelling, this makes grok a bit
shorter and is the way Grok code typically looks:
import grokcore.component as grok
from zope.i18n.interfaces import ITranslationDomain
class HelloWorldTranslationDomain(grok.GlobalUtility):
grok.implements(ITranslationDomain)
grok.name('helloworld')
Regards,
Martijn
More information about the Zope-Dev
mailing list