Ka-Ping Yee wrote:
... In many classes, __init__ exercises authority. An obvious C type with the same problem is the "file" type (being able to ask a file object for its type gets you the ability to open any file on the filesystem). But many Python classes are in the same position -- they acquire authority upon initialization.
Just out of curiosity wouldn't you say that part of the capability zen is that capabilities that allow you to turn global strings into objects should either not exist or be very segmented from other capabilities? (in fact I remember discussing this with you at some Python conference!)
In capdesk, I believe you drag a capability for a file from one window to another so that the "drop target" never needs to know or care what the filename was.
So it might be better to separate the authority from the __init__ than to separate constructors from classes. Arguably it is better to add to the library than to change the language.
x = zipfile.Zipfile(securefile("foo.txt").reader())