is it possible to set namespace to an object.

George Sakkis george.sakkis at gmail.com
Mon Jan 21 16:00:52 EST 2008


On Jan 21, 2:52 pm, glomde <brk... at gmail.com> wrote:
> On 21 Jan, 20:16, George Sakkis <george.sak... at gmail.com> wrote:
>
>
>
> > On Jan 21, 1:56 pm, glomde <brk... at gmail.com> wrote:
>
> > > On 21 Jan, 18:59, Wildemar Wildenburger
>
> > > <lasses_w... at klapptsowieso.net> wrote:
> > > > glomde wrote:
> > > > > Hi,
>
> > > > > is it somehow possible to set the current namespace so that is in an
> > > > > object.
> > > > > [snip]
> > > > > set namespace testObj
> > > > > Name = "Test"
>
> > > > > Name would set testObj.Name to "Test".
>
> > > > > [snip]
>
> > > > > Is the above possible?
>
> > > > Don't know, sorry. But let me ask you this: Why do you want to do this?
> > > > Maybe there is another way to solve the problem that you want to solve.
>
> > > The reason is that I do not want to repeat myself. It is to set up XML
> > > type like
> > > trees and I would like to be able to do something like.
>
> > > with ElemA():
> > >   Name = "Top"
> > >   Description "Blahaha..."
> > >   with ElemB():
> > >     Name = "ChildA"
> > >     Description "Blahaha..."
> > >  ....
>
> > > This would be the instead of.
> > > with ElemA() as node:
> > >   node.Name = "Top"
> > >   node.Description "Blahaha..."
> > >   with ElemB() as node:
> > >     node.Name = "ChildA"
> > >     node.Description "Blahaha..."
> > >  ....
>
> > > So to save typing and have something that I think looks nicer.
>
> > ... and more confusing for anyone reading the code (including you
> > after a few weeks/months). If you want to save a few keystrokes, you
> > may use 'n' instead of 'node' or use an editor with easy auto
> > completion.
>
> > By the way, is there any particular reason for generating the XML
> > programmatically like this ? Why not have a separate template and use
> > one of the dozen template engines to populate it ?
>
> > George
>
> I am not using it for XML generation. It was only an example. But
> the reason for using it programmatically is that you mix power
> of python with templating. Using for loops and so on.

Any template engine worth its name supports loops. Other than that,
various engines provide different degrees of integration with Python,
from pretty limited (e.g. Django templates) to quite extensive (e.g.
Mako, Tenjin).

> The above was only an example. And yes it might be confusing if you
> read the code. But I still want to do it, the question is it possible?

I would be surprised if it is. Yet another idea you may want to
explore if you want that syntax so much is by (ab)using the class
statement since it introduces a new namespace:

class ElemA:
  Name = "Top"
  Description "Blahaha..."
  class ElemB:
    Name = "ChildA"
    Description "Blahaha..."


PEP 359 would address this easily (it's actually the first use case
shown) but unfortunately it was withdrawn.

George


[1] http://www.python.org/dev/peps/pep-0359/#example-simple-namespaces



More information about the Python-list mailing list