[Python-Dev] read-only properties

John Williams jrw@pobox.com
Tue, 08 Oct 2002 17:34:05 -0500


Guido van Rossum wrote:
>>The key seems to be that property() doesn't know the name the
>>property has.
> 
> 
> Oops, you're right.  This makes it practically impossible to improve
> the error message (without the kind of trick that Jeff shows).
> 
> --Guido van Rossum (home page: http://www.python.org/~guido/)
> 
> _______________________________________________
> Python-Dev mailing list
> Python-Dev@python.org
> http://mail.python.org/mailman/listinfo/python-dev

Why not have the property find its name in the class's __dict__, 
something like this:

(in class property)
   def __set__(self, obj, value):
     if self.fset is not None:
       self.fset(obj, value)
     else:
       for key, value in type(obj).__dict__.iteritems():
         if value is self:
           raise AttributeError, "Property '" + key + "' is read-only."
       # No name?  Strange put possible I guess.
       raise AttributeError, "can't set property"