[Zope] how to use setattr in __init__ method

Florent Guillaume fg@nuxeo.com
Tue, 6 Aug 2002 13:59:48 +0000 (UTC)


Nico de Boer  <nico@nfg.nl> wrote:
> 
> Hi all,
> 
> I want to clean up my code by setting my arguments dynamically at
> initialization. I use the manage_afterAdd method for this, but isn't
> there an other way to do this?

You should do your initialization in addMail by passing it the correct
list of arguments to the constructor, and have __init__ do the
initialization.

manage_afterAdd will be called when pasting an object too, so you don't
want to use that.

Florent

> 
> This is my code now:
> 
>     def __init__(self, id, title=''):
>         """Initialization Product, a form is added at init"""
>         self.form = self.init_form()
>         self.Add_Form()
> 
>     def manage_afterAdd(self, item, container):
>         """magical method"""
>         for (name, value) in self.REQUEST.form.items():
>             setattr(self, name, value)
> 
> This is my add Form ( in short ):
> 
> <dtml-var manage_page_header>
> <dtml-var manage_tabs>
> 
> <form action="addMail" method="post" enctype="text/html">
> 
> <input type="hidden" name="intro" value="">
> <input type="hidden" name="subscription" value="">
> 
>     Id
>     <input type="text" name="id" size="40" />
> 
>     Title
>     <input type="text" name="title" size="40" />
> 
>     <input class="form-element" type="submit" name="submit" value="  Add  ">
> 
> </form>
> 
> <dtml-var manage_page_footer>
> 
> Can't this also be done with:
> 
> 	def __init__( self, id='', **kw ):
> 		"""initialization simple object"""
> 		self.id = id
> 		for (key,value) in kw.items():
> 			setattr(self, key, value)
> 
> Greetz Nico
-- 
Florent Guillaume, Nuxeo (Paris, France)
+33 1 40 33 79 87  http://nuxeo.com  mailto:fg@nuxeo.com