Fernando Perez <[EMAIL PROTECTED]> wrote: > > Alan Green <[EMAIL PROTECTED]> wrote: > >> Steven Bethard is proposing a new collection class named Bunch. I had > >> a few suggestions which I attached as comments to the patch - but what > >> is really required is a bit more work on the draft PEP, and then > >> discussion on the python-dev mailing list. > > But one thing which I really find necessary from a useful 'Bunch' class, is > the ability to access attributes via foo[name] (which requires implementing > __getitem__). Named access is convenient when you _know_ the name you need > (foo.attr). However, if the name of the attribute is held in a variable, IMHO > foo[name] beats getattr(foo,name) in clarity and feels much more 'pythonic'.
My feeling about this is that if the name of the attribute is held in a variable, you should be using a dict, not a Bunch/Struct. If you have a Bunch/Struct and decide you want a dict instead, you can just use vars: py> b = Bunch(a=1, b=2, c=3) py> vars(b) {'a': 1, 'c': 3, 'b': 2} > Another useful feature of this Struct class is the 'merge' method. [snip] > my values() method allows an optional keys argument, which I also > find very useful. Both of these features sound useful, but I don't see that they're particularly more useful in the case of a Bunch/Struct than they are for dict. If dict gets such methods, then I'd be happy to add them to Bunch/Struct, but for consistency's sake, I think at the moment I'd prefer that people who want this functionality subclass Bunch/Struct and add the methods themselves. > I think the current pre-PEP version is a bit too limited to be generally > useful in complex, real-world situtations. It would be a good starting point > to subclass for more demanding situations, but IMHO it would be worth > considering a more powerful default class. I'm probably not willing to budge much on adding dict-style methods -- if you want a dict, use a dict. But if people think they're necessary, there are a few methods from Struct that I wouldn't be too upset if I had to add, e.g. clear, copy, etc. But I'm going to need more feedback before I make any changes like this. Steve -- You can wordify anything if you just verb it. --- Bucky Katt, Get Fuzzy _______________________________________________ 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