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

Martijn Faassen faassen at infrae.com
Fri Oct 20 07:53:17 EDT 2006


Philipp von Weitershausen wrote:
> 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

Okay, +1

Regards,

Martijn


More information about the Grok-dev mailing list