[Grok-dev] class-level versus instance-level attributes for schema

Philipp von Weitershausen philipp at weitershausen.de
Fri Oct 20 07:24:24 EDT 2006


Martijn Faassen wrote:
>>> But we'd need to poke in a custom __init__ into the class during 
>>> grok-time, which could be considered icky (then again, poking in 
>>> class-level attributes could be considered as icky as well).
>>
>> Why don't me make that the default grok.Model.__init__? In the rare 
>> case that people need to do their own initialization, they can choose 
>> to use super() (or not).
> 
> That sounds like a reasonable strategy, though I'd like to explore some 
> alternatives:
> 
> An alternative would be to have a separate SchemaModel object and do it 
> in the __init__ there, but another source of confusion could arise: 
> people using class fields on a non-schema model and having it not working.
> 
> What we could also do is create an __init__ based on the form, but only 
> poke it in if the grok.Model is not defining one itself. That might be 
> too magic however.

I prefer as little magic as necessary. I think the "super" strategy is 
easily documented:

   * either you don't implement your custom __init__

   * or if you do, you

     o either have to set reasonable default values for the fields

     o or make sure to call the super __init__ to have it done for you

Philipp


More information about the Grok-dev mailing list