[Python-Dev] read-only properties

John Williams jrw@pobox.com
2002年10月08日 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"

AltStyle によって変換されたページ (->オリジナル) /