self

Eric Texier erict at millfilm.co.uk
Fri Jun 7 11:08:44 EDT 2002


It works for me with 2.2 but not with 1.5.2 both on Linux

Vojin Jovanovic wrote:

> > Why such a
> > harsh reaction without bothering to correct the obvious 'typo'?
>
> No, it is not the 'typo'.  I corrected that immediately.
> Also you had in your message >>> e=Evaluator({'a':'3']), a wrong bracket.
> Go back to your post and check it out.  That is why I thought that you
> didn't test it.
> However,  all that aside, the problems is that your code just din't work
> after I corrected those 2 'typos'.  Take a look yourself ....
>
> Python 2.1.2 (#31, Jan 15 2002, 17:28:11) [MSC 32 bit (Intel)] on win32
> Type "copyright", "credits" or "license" for more information.
> IDLE 0.8 -- press F1 for help
> >>> class Evaluator:
>     def __init__(self, eqs={}):
>         self.__dict__['equations']=eqs
>     def __getattr__(self, name):
>         value = self.equations[name]
>         if type(value)!=str:
>             return value   # if it's not a string, just give it back
>         scope={}
>         while 1:
>             try:
>                 return eval(value, scope)
>             except NameError, n:
>                 var=str(n).split("'")[1]
>                 scope[var]=getattr(self, var)
>     def __setattr__(self, name, value):
>         self.equations[name]=value
>
> >>> class Berta:
>     a=5
>
> >>> e=Evaluator({'a':3})
> >>> e.berta=Berta()
> >>> e.g='berta.a*a'
> >>> e.g
> 'berta.a*a'
> >>>
>
> V.J.




More information about the Python-list mailing list