On Dec 13, 2007 1:24 AM, Noam Raphael <[EMAIL PROTECTED]> wrote: > Was it considered to drop the parentheses after "dict.keys()", to make > it "dict.keys" (that is, to make it a property instead of a method > with no arguments)? If it was, please forgive me - a few minutes of > googling didn't find it.
Yes, it was considered, and rejected over a combination of backwards compatibility and concerns that for some user-defined sequences it would be expensive to compute and hence wrong to look like a mere attribute. (The backwards compatibility concerns weren't merely of breaking every line of code in existence -- we can fix that with the 2to3 tool; they were also over user expectations.) > I now write (another?) ordered dict, and I thought that the easiest > way to get the key with a given index would be "d.keys[5]". But it > means that d.keys is a collection of keys, not a method - and why not? > > If backwards compatibility is a problem, we can make d.keys return the > same object that d.keys() currently returns, and add to the dict_keys > object a calling operation which raises a warning and returns itself. > > Of course, d.values and d.items are the same. I'm not going to argue over your API choice for your own class, but I have to take a firm stance regarding changes to the core language and its builtins at this point. We had an extensive period for submission and review of change proposals, which ended in April. While we are still making some adjustments, we are limiting changes at this point to what appears necessary based on actual experience with the alpha releases, and your proposal doesn't fall in that category. -- --Guido van Rossum (home page: http://www.python.org/~guido/) _______________________________________________ Python-3000 mailing list Python-3000@python.org http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com