On Tue, 13 Jul 1999 09:53:00 -0400, Brian Lloyd <Brian@digicool.com> said: <snip> Brian> # Create the new instance Brian> newob=self.Control_Panel.Products.Foo.foo(id) Brian> It would be better in this case (to avoid hard coding Brian> product names and locations) to use 'self' in its initial Brian> context (the factory), and defer setting self to this() Brian> until after you are done using attributes of the Product/ Brian> Factory: Brian> # Create the new instance. Here, self is still Brian> # the Factory, which can acquire the ZClass that Brian> # we want to instantiate (foo) from the Product. Brian> newob=self.foo(id) <snip> Makes sense, but when I try newob=self.foo(id), I get an AttributeError on 'foo'. (I'm working on an external method which is totally outside the ZClass's Product, it just has to create a ZClass as a side effect). Brian> The gory details of how this stuff works can be found in Brian> the App package in Zope (Product, Factory, FactoryDispatcher, Brian> etc.) Hopefully this explanation helps a bit - let me know Brian> if it did more harm than good, and maybe I can get Jim to Brian> explain it better... :^) Yes, this does help out. I shall take a look at the App package. Thanks, Alex Rice | alrice@swcp.com | http://www.swcp.com/~alrice Current Location: N. Rio Grande Bioregion, Southwestern USA