[Grok-dev] @grok.traverse versus traverse

Martijn Faassen faassen at infrae.com
Thu Oct 19 07:51:45 EDT 2006

Christian Theune wrote:
> Sounds reasonable. However, what about this scenario: You have a model
> class that defines multiple "getFoo" methods, like:
> class House(grok.Model):
> 	def getEntrance(self, name):
> 		return ...
> 	def getWindow(self, name):
> 		return
> 	def getLevel(self, level):
> 		return ...
> With the decorator, I could say @grok.traverse to select one of those
> for traversal without rewriting anything. With before I'd have to do an
> indirection with code, I don't know how often this pattern would
> actually set in, but I'd like to be able to use a decorator in this
> case, I think.

Adding a decorator saves you 1 line of code and is a trifle less DRY, 
but still, this isn't very disastrous:

class House(grok.Model):
    def traverse(self, name):
        return self.getWindow(name)

Often enough there needs to be some mangling of the name anyway, for 
instance int(name) and whatnot. The case when you can get away with just 
using a decorator is therefore rather limited anyway, so I'd say YAGNI 
to that.



More information about the Grok-dev mailing list