On Wed, May 9, 2012 at 8:50 AM, Antoine Pitrou
On Wed, 9 May 2012 10:44:59 -0400 Brett Cannon
wrote: I wish there was a builtin class
class record: pass
which can be used to create objects which have only attributes and no methods.
I have heard this request now a bazillion times over the years. Why don't we have such an empty class sitting somewhere in the stdlib with a constructor classmethod to simply return new instances (and if you want to get really fancy, optional keyword arguments to update the instance with the keys/values passed in)? Is it simply because it's just two lines of Python that *everyone* has replicated at some point?
In this case, it's because sys is a built-in module written in C, and importing Python code is a no-go.
Something I've remotely considered is an approach like namedtuple takes: define a pure Python template, .format() it, and exec it. However, this is partly a reflection of my lack of familiarity with using the C-API. As well, the only place I've seen this done in the CPython code base is with namedtuple. Consequently, I was planning on taking the normal approach. Should the namedtuple-exec technique be avoided at the C level? -eric