[SAGA-RG] SAGA attributes as Python dictionaries?

Andre Merzky andre at merzky.net
Wed Nov 4 17:06:48 CST 2009


Quoting [Manuel Franceschini] (Nov 04 2009):
> 
> On Wed, Nov 4, 2009 at 6:34 PM, Steve Fisher <dr.s.m.fisher at gmail.com> wrote:
> > Just a note to remind people that the dictionary syntax in python is
> > just a convenience - you need to implement __setitem__, __getitem__,
> > __delitem__ etc. Our __setitem__   can reject requests to set fields
> > whoch don't already exist for those cases where the set of attributes
> > is not extensible. It just needs a private method called by the
> > implementation to set the attributes with any defalt values and
> > indicate whether or not it is extensible. I think it is best to try it
> > and see if there are any practical problems. Also see:
> > http://docs.python.org/library/userdict.html#module-UserDict which may
> > be useful.
> 
> It is certainly doable from the technical point of view. My question
> is what would be the advantages of having a dict-like interface? Would
> that be in this form then:

If I rember the discussion from Banff correctly, the proposal was
more like

  jobDescription.attributes["Executable"] = "/bin/hostname"

to decouple the attributes from the object properties.  The
dictionary seems to offer a reasonable interface for atributes, so
why not use it?

not sure if one can then argue why not to use 

      jobDescription.attributes.Executable = "/bin/hostname"

?

One question about both approaches though, and to also about both
approaches you list below: how would async ops be realized?

Best, Andre


> 
> 1)  jobDescription["Executable"] = "/bin/hostname")
> 
> Where 'jobDescription' is an object. Why not having just class
> attributes (as Mathijs showed in the first e-mail), as in:
> 
> 2)  jobDescription.Executable = "/bin/hostname"
> 
> 
> IMHO, one of the most important Pythonic properties is having exactly
> _one_ way of achieving a task. In other words, having two different
> ways (even if the added way is slightly simpler) is not what I would
> want. Therefore, if we decide to expose one of the above ways to the
> end user, it should be the _only_ one, while
> jobDescription.set_attribute(...) should not be part of the API for
> the end user then.
> 
> My 2 cents.
> 
> Cheers,
-- 
Nothing is ever easy.


More information about the saga-rg mailing list