On Fri, Sep 29, 2006 at 09:00:16AM +0200, Daniel de la Cuesta wrote:
> When I try to run the script I get an error saying that the variable "path"
> is not present.
> If i do:
> everything is ok,
> How can I refer to a variable into a path expression in a Python Based Script?
On the surface this isn't really a zope question, it's basic Python.
You're looking for the getattr() builtin function. For example:
[EMAIL PROTECTED] ~ $ python
Python 2.4.3 (#1, Jul 27 2006, 13:07:44)
[GCC 3.4.6 (Gentoo 3.4.6-r1, ssp-3.4.5-1.0, pie-8.7.9)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> class Foo:
... bar = 1
>>> foo = Foo()
>>> path = 'bar'
Traceback (most recent call last):
File "<stdin>", line 1, in ?
AttributeError: Foo instance has no attribute 'path'
>>> getattr(foo, path)
Of course, Zope 2 has to complicate things a bit :)
Zope's ObjectManagers, such as Folders, also allow you
to use dictionary syntax to access their children.
So you can do foo[path] as well.
There is a semantic difference, though, in Zope 2:
* attribute access like getattr(foo, 'bar'), or foo.bar, falls
back to using acquisition to look for 'bar' in foo's parent
* Item access (like foo['bar']) does not use acquisition, so you'd get an
immediate KeyError if foo does not contain the named object.
I recommend using item access in all cases except when you know
for sure that you want to use acquisition. Acquisition bugs can be big
time-wasters - e.g. accidentally acquiring a slightly different object
than the one you wanted to use, because the one you expected to find
happens to be missing, or a site admin renamed it, or some such.
Zope maillist - Zope@zope.org
** No cross posts or HTML encoding! **
(Related lists -