----- Original Message -----
> From: Albert-Jan Roskam <fo...@yahoo.com.dmarc.invalid> > To: Terry Reedy <tjre...@udel.edu>; "python-list@python.org" > <python-list@python.org> > Cc: > Sent: Sunday, August 3, 2014 11:17 AM > Subject: Re: Correct type for a simple "bag of attributes" namespace object <snip> >>>>> Right. The 'types' module provides a SimpleNamespace > class >> for the >>>>> common "bag of attributes" use case:: >>>>> >>>>> >>> import types >>>>> >>> foo = types.SimpleNamespace() >>>>> >>> foo.x = 3 >>>>> >>> foo >>>>> namespace(x=3) >>>> >>>> This is too much for children (& beginners). >>>> >>>> But perhaps what I should be asking for is for a new built-in that > does >> what types.SimpleNamespace() does, so that without any import you can > write, >> say, >>>> >>>> foo = namespace(a=1, b=2) >>>> # or >>>> bar = namespace() >>>> bar.a = 1 > > I find the following obscure (to me at least) use of type() useful exactly > for > this "bag of attributes" use case: >>>> employee = type("Employee", (object,), {}) >>>> employee.name = "John Doe" >>>> employee.position = "Python programmer" >>>> employee.name, employee.position, employee > ('John Doe', 'Python programmer', <class > '__main__.Employee'>) > >>>> details = dict(name="John Doe", position="Python > programmer") >>>> employee = type("Employee", (object,), details) >>>> employee.name, employee.position, employee > ('John Doe', 'Python programmer', <class > '__main__.Employee'>) PS to my previous mail: class() can (should?) be used here to do the exact same thing but it feels a little like "Getting your car [OOP] just because you need an ashtray [bundled items]". :-) -- https://mail.python.org/mailman/listinfo/python-list