is it possible to set namespace to an object.

G

glomde

Hi,

is it somehow possible to set the current namespace so that is in an
object.
Somthing like.

class Test():
....

testObj = Test()

set namespace testObj
Name = "Test"

Name would set testObj.Name to "Test".

I was thinking this could be done with the with statement somehow
(without using as) in the __enter__
function.

Is the above possible?

/T
 
W

Wildemar Wildenburger

glomde said:
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.

/W
 
G

glomde

glomde said:
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".

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.

BR

/T
 
G

George Sakkis

glomde said:
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
 
G

glomde

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.
XIST(www.livinglogic.de) is
doing something similar. But I would like the namespace thing.

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?
 
G

George Sakkis

On 21 Jan, 18:59, Wildemar Wildenburger
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 ?

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
 
G

glomde

On 21 Jan, 18:59, Wildemar Wildenburger
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

Yes the make statement would have done it. But I realized that it
might be possible if it is possible to override the __setattr__ of
local. Then the enter function would set a global variable and the
default setattr would set/get variables from this variable.

Is this possible?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,434
Messages
2,571,691
Members
48,796
Latest member
Greg L.

Latest Threads

Top