Re: namespaces
Available news archives: comp.lang.tcl - comp.lang.python - comp.security.firewalls - sci.crypt - comp.lang.php - comp.lang.javascript
Google
 
Web news.hping.org


comp.lang.python archive

Re: namespaces

From: Paolino <paolo_veronelli@tiscali.it>
Date: Sun Jul 31 2005 - 15:09:48 CEST

Steven D'Aprano wrote:

> def translate(text):
> import string
> all=string.maketrans('','')
> badcars=all.translate(all,string.letters+string.digits)
> table=string.maketrans(badcars,'_'*len(badcars))
> return text.translate(table)
>
> No pollution.

And no efficience.Recalculating all,badcars and table was not an
acceptable solution ,sorry if I didn't state this point :(

> Then after you are finished with the bindings, delete them:
>
> import string
> all=string.maketrans('','')
> badcars=all.translate(all,string.letters+string.digits)
> table=string.maketrans(badcars,'_'*len(badcars))
> def translate(text):
> return text.translate(table)
> # clean up the temporary variables so as to prevent namespace pollution
> del string; del all; del badcars; del table

Well,a solution but not a programming pattern for an elegant language ?
More this is also loosing informations.

Probably I've not been clear with the word pollution and the example is
poor.
I didn't mean 'binding to unuseful informations' but 'bindings in a non
-structured organization'

I restate the problem.Python is in some ways unable to project the
module structure inside the module.Or ... namespace pattern instances
seems not deriving from a common pattern.

Finally, (before I get polemic which is not my aim) I start thinking
classes (namespaces defined via 'class' keyword) are a specialization of
generic namespaces in which there-defined methods get a special way of
being called and __call__ method is a way of cloning access to them.
(Thin ice....)

Don't really know if modules can be defined as specialization of
generic namespaces and be placed somewhere next to classes.

Even worse I get with methods and function namespaces.

Rob Williscroft wrote:

> After 3 or 4 iterations I refactored you code to this:
>
> def translate( text )
> import string
> all=string.maketrans('','')
> badcars=all.translate(all,string.letters+string.digits)
> TABLE = string.maketrans(badcars,'_'*len(badcars))
>
> global translate
> def translate( text ):
> return text.translate(TABLE)
>
> return translate( text )

There is a way to access 'all' and 'badcars' here?

In my trial translate.all and translate.badcars can be accessed easily
and maybe coherently.

Thanks a lot, and don't tell me 'the dictator has marked the trail' ;)

        

        
                
___________________________________
Yahoo! Mail: gratis 1GB per i messaggi e allegati da 10MB
http://mail.yahoo.it
Received on Thu Sep 29 17:17:26 2005