I came up against a situation just now whereby I had several folders in zope named with prefixes 7_1Load I believe it is illigal in python to have an object name start with an integer. So when I tried to access my folder by name in an external method I got an error. Is there another way of accessing the object in python? If not shouldn't python naming restrictions be applied to zope objects otherwise there is no guarentee that an external method will work with all objects.
ps. The line I was using in the external method was "eval('self.'+id)" or something similar. I also tried getattr
Object naming in Zope plays by slightly different rules than Python naming, by necessity. We have had customers, for example, that _hate_ the _html naming convention and wanted badly to use .htm, .html etc. names. There are also concessions made in the name of supporting things like FTP and WebDAV - in these cases, Zope really needs to be willing to accept names that occur in real world file names (~files, etc.). So, the short answer is that when working with Zope objects from an external method, you should always use getattr() or Zope-provided API methods like objectValues. 'eval' constructs should be avoided. You say above that you tried getattr() - can you tell me how this failed (the traceback)? That should work for any name, no matter how illegal the name is in Python... Brian Lloyd brian@digicool.com Software Engineer 540.371.6909 Digital Creations http://www.digicool.com