Is there any safe way to create an instance of an untrusted class
without consulting the class in any way? With old-style classes, I can
recreate an instance from another one without worrying about malicious
code (ignoring, for now, malicious code involving attribute access) as
shown below.

>>> import types
>>> class Foo:
...     def __init__(self, who, knows, what, args):
...         self.mystery_args = (who, knows, what, args)
...         print "Your code didn't expect the Spanish inquisition!"
...
>>> f = Foo('spam','eggs','ham','bacon') # This would be in a restricted 
>>> environment, though.
Your code didn't expect the Spanish inquisition!
>>> types.InstanceType(Foo, f.__dict__) # This wouldn't, but we never run that 
>>> code, anyways.
<__main__.Foo instance at 0x008B5FD0>
>>>

I'm not sure how to do the same for new-style classes, if it's at all
possible to do from within Python. Is there any way to accomplish this,
or is there no practical way to do so?

Thanks,
- Devan

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to