From: Finn B. <bc...@us...> - 2001-04-25 18:39:26
|
Update of /cvsroot/jython/jython/org/python/core In directory usw-pr-cvs1:/tmp/cvs-serv26074 Modified Files: PyClass.java Log Message: PyClass.__setattr__(): Fix #409930. Allow assignment to __bases__, __name__ and __dict__. Index: PyClass.java =================================================================== RCS file: /cvsroot/jython/jython/org/python/core/PyClass.java,v retrieving revision 2.23 retrieving revision 2.24 diff -C2 -r2.23 -r2.24 *** PyClass.java 2001/03/22 20:02:49 2.23 --- PyClass.java 2001/04/25 18:39:24 2.24 *************** *** 215,221 **** public void __setattr__(String name, PyObject value) { ! if (name == "__dict__" || name == "__name__" || name == "__bases__") { ! throw Py.TypeError("read-only special attribute: "+name); } __dict__.__setitem__(name, value); } --- 215,237 ---- public void __setattr__(String name, PyObject value) { ! if (name == "__dict__") { ! if (!value.isMappingType()) ! throw Py.TypeError("__dict__ must be a dictionary object"); ! __dict__ = value; ! return; } + if (name == "__name__") { + if (!(value instanceof PyString)) + throw Py.TypeError("__name__ must be a string object"); + __name__ = value.toString(); + return; + } + if (name == "__bases__") { + if (!(value instanceof PyTuple)) + throw Py.TypeError("__bases__ must be a tuple object"); + __bases__ = (PyTuple) value; + return; + } + __dict__.__setitem__(name, value); } |