Set/Get attribute syntatic sugar

Заур Шибзухов szport at fromru.com
Tue Jun 28 14:35:26 EDT 2005


There is a syntactic sugar for item access in
dictionaries and sequences:

o[e] = v <-> o.__setitem__(e, v)
o[e] <-> o.__getitem__(e)

where e is an expression.

There is no similar way for set/get attribute for objects.
If e is a given name, then 
     
o.e = v <-> o.__setattr__(e, v)
o.e <-> o.__getattr__(e)

Anybody thought about this issue?

We could write something like this:

o.[e] = v
o.[e]

or 

o.(e) = v
o.(e)

in this case.

For example:

setattr(self, method_name, getattr(self.metadata,
method_name)) -->
self.(method_name) = self.metadata.(method_name)

setattr(command_obj, neg_opt[option], not
strtobool(value)) -->
command_obj.(neg_opt[option]) = not strtobool(value)

setattr(self, '%s_open' % type,
                    lambda r, proxy=url, type=type,
meth=self.proxy_open: 
                    meth(r, proxy, type)) -->
self.('%s_open' % type) = 
    lambda r, proxy=url, type=type,
meth=self.proxy_open: meth(r, proxy, type)




More information about the Python-list mailing list