On Mar 1, 7:37 pm, Steven Bethard <[EMAIL PROTECTED]> wrote: > Arnaud Delobelle wrote: > > On Mar 1, 4:01 pm, Steven Bethard <[EMAIL PROTECTED]> wrote: > >> Arnaud Delobelle wrote: > > [...] > >> This does pretty much the same thing as the recipe I posted: > > > Not at all. My new_struct create returns a new class which is similar > > to a C struct (notice the __slots__). The recipe you refer to is > > nothing more a class which can be initialised with some attributes. It > > does not address the OP's question at all. > > >> http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/502237 > > Huh? It uses __slots__ in almost exactly the same way.
I'm sorry I somehow got my hyperlinks mixed up and though you were refering to http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/361668 which was mentioned by someone else on this thread. If I had seen yours I wouldn't have posted this. So my comment on you link was completely erroneous as, as you are pointing out, the functionality of my code snippet and your link are very similar. Mine was only a proof of concept bit of code, so yours is more polished. Although I don't see the necessity of a metaclass: you could have class Record(object): def __init__(self, *vals): for slot, val in zip(self.__slots__, vals): setattr(self, slot, val) # And the other methods if you want positional slots initialisation. I chose keyword arguments in mine because I though it would be a good idea to be able not to initialise some of them at object instanciation. -- Arnaud -- http://mail.python.org/mailman/listinfo/python-list