When an extension type Foo defines tp_getattr, but leaves tp_setattr
NULL, an attempt to set an attribute bar results in an AttributeError
with the message "'Foo' object has no attribute 'bar'".  This message
is misleading because the object may have the attribute 'bar' as
implemented in tp_getattr.  It would be better to change the message
to "'Foo' object has only read-only attributes (assign to .bar)" as in
the case tp_setattro == tp_setattr == NULL in  PyObject_SetAttr .

I've also noticed that the exceptions raised from PyObject_SetAttr are
TypeErrors. Shouldn't PyObject_GenericSetAttr raise a TypeError if
tp_setattr is null but tp_getattr is not?  This would be consistent
with the errors from read-only descriptors.
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to