Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Python: Python

setattr vs readonly property

 

 

Python python RSS feed   Index | Next | Previous | View Threaded


cai.haibin at gmail

Sep 12, 2007, 2:07 AM

Post #1 of 3 (59 views)
Permalink
setattr vs readonly property

hi,

My main purpose for using setattr(object, attr, value) for assign
values from a dict that has some keys that may not be present on some
object's attibute, which makes it work for me. My problem is dealing
with read only attribute like sample_attribute =
property(f_get=_get_sample_attribute). what approach should I use? Or
is my first approach In the first place right?

Thanks
james

--
http://mail.python.org/mailman/listinfo/python-list


deets at nospam

Sep 12, 2007, 2:16 AM

Post #2 of 3 (51 views)
Permalink
Re: setattr vs readonly property [In reply to]

james_027 wrote:

> hi,
>
> My main purpose for using setattr(object, attr, value) for assign
> values from a dict that has some keys that may not be present on some
> object's attibute, which makes it work for me. My problem is dealing
> with read only attribute like sample_attribute =
> property(f_get=_get_sample_attribute). what approach should I use? Or
> is my first approach In the first place right?

Since read-only properties are very concise written as this:


class Foo(object):
@property
def ro_prop(self):
return "whatever"

I'd say that's the way to go - using __getattr__ for this will lead to
rather convoluted code IHMO.

Diez
--
http://mail.python.org/mailman/listinfo/python-list


wizzardx at gmail

Sep 12, 2007, 3:05 AM

Post #3 of 3 (49 views)
Permalink
Re: setattr vs readonly property [In reply to]

> My main purpose for using setattr(object, attr, value) for assign
> values from a dict that has some keys that may not be present on some
> object's attibute, which makes it work for me. My problem is dealing
> with read only attribute like sample_attribute =
> property(f_get=_get_sample_attribute). what approach should I use? Or
> is my first approach In the first place right?

You could try catching the exception thrown when you attempt to assign
to a read-only attribute. Although you may get consistency issues. ie
your object doesn't have all the details from the dict, but the
calling code expects them to be set. Perhaps you should provide
"setter" methods for the properties also, so that your objects
internal state gets set correctly.

eg: in your class declaration:

def setfoo(self, value):
# Add code here to check 'value' and set internal 'foo' state correctly
self._foo = value

def getfoo(self):
return self._foo

foo = property(setfoo, getfoo)
--
http://mail.python.org/mailman/listinfo/python-list

Python python RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact lists@gossamer-threads.com
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.