[PEAK] I don't understand uponAssembly()
Doug Quale
quale1 at charter.net
Thu Mar 24 16:20:14 EST 2005
John Landahl <john at landahl.org> writes:
> Doug Quale wrote:
> > but I don't understand how this works.
> > >>> class k(binding.Component):
> > ... def uponAssembly(self):
> > ... print 'assembling %r' % self
> > ...
>
> This is not how uponAssembly works, as far as I know. It is typically
> used in a property constructor, like so:
>
> >>> class Foo(binding.Component):
> ... def bar(self):
> ... print "hello world"
> ... bar = binding.Make(bar, uponAssembly=True)
> ...
> >>> f = Foo(config.makeRoot())
> hello world
>
> What is it you're trying to do?
I want to run some initialization when the component instance is
created. (The components are controllers for GUI views.) Normally
that would be done in __init__(), but peak largely removes the need to
code __init__, and for that I'm grateful.
I see now that the peak api docs warn not to override uponAssembly(),
which means that I did a very poor job in trying to figure this out.
The construction you demonstrate should do exactly what I need.
class k(binding.Component):
def _my_init(self):
...
_my_init = binding.Make(_my_init, uponAssembly=True)
I was a bit afraid that my misunderstanding would be about an
embarrassingly simple point, but I'm pleased that it's easy to get the
behavior I want. I searched the mailing list archives (google using
site:peak.telecomunity.com is a great tool) and I see now that the
answer was there, but I failed to make the connection. There was some
discussion about starting services upon instance construction using
uponAssembly=True bindings.
Thanks for your help.
More information about the PEAK
mailing list