[Zope] RE: Passing namespace to Python scrict was:  how to call a n external module from a Python script?
   
    Dieter Maurer
     
    dieter@handshake.de
       
    Wed, 26 Sep 2001 20:02:02 +0200 (CEST)
    
    
  
Reif Peter writes:
 > ....
 > My variable is named "zone". The following Python-statement yields 1:
 > 
 > 	return namespace.has_key("zone")
 > 
 > The following calls yield an error (each one):
 > 
 > 	return namespace.items()
 > 	return namespace.keys()
 > 	return getattr(namespace, "zone")
This is all as it should be!
"namespace" was obviously passed correctly, as shown
by the success of 'namespace.has_key("zone")'.
"namespace.items" and "namespace.keys" fail because
the DTML namespace implements the mapping API only
partially: "has_key" and subscription "[...]".
The bound variables are exposed via subscription
and not as attributes. Therefore,
    'namespace["zone"]' will work while "namespace.zone"
    and the equivalent 'getattr(namespace,"zone")' will
    fail.
In some cases, you will want to use "namespace.getitem('zone')"
instead of "namespace['zone']".
Please read the "Name Lookup" and "DTML" sections of
  <http://www.dieter.handshake.de/pyprojects/zope/book/chap3.html>
Most of your problems and questions are addressed there.
Dieter