On Tue, 2006-03-28 at 17:28 +1200, Greg Ewing wrote: > Barry Warsaw wrote: > > My PySet_Clear() raises a SystemError > > and returns -1 when the object is a frozen set. > > Isn't SystemError a bit drastic? TypeError would be > sufficient here, surely.
Possibly, but all the other PySet_*() functions call PyErr_BadInternalCall() when they get a type they don't accept, so PySet_Clear() should be consistent. > > If PyObject_Clear() is implemented something like > > > > int PyObject_Clear(PyObject *o) > > { > > return (o->ob_type->tp_clear ? o->ob_type->tp_clear(o) : -1); > > } > > > > then you /would/ be able to clear a frozen set. > > Hmmm, the problem here, I think, is that tp_clear is > really only designed for use by the garbage collector. > Giving anything else access to it is probably wrong. Exactly. > Clearability is not a general feature in Python land -- > a few types have a clear() method, but this is an > ad hoc feature of the type concerned. I don't think > it makes sense to have a general PyObject_Clear > function at all. I'm thinking the same thing, which is why I'm now favoring PySet_Clear() again. -Barry
signature.asc
Description: This is a digitally signed message part
_______________________________________________ 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