On Mon, 18 Nov 2013 22:36:34 -0800, John Ladasky wrote: > I just had a look at the namedtuple source code. Part of my conceptual > problem stems from the fact that namedtuple() is what I think people > call a "class factory" function, rather than a proper class constructor. > I'll read through this until I understand it.
That's right. Since it's a factory, you don't have advantage of the class syntax -- although that syntax is only syntactic sugar for something which actually ends up as a function call! When you write: class MyClass(ParentClass, OtherClass): a = 23 def method(self, arg): code goes here the interpreter converts that to a function call: MyClass = type("MyClass", (ParentClass, OtherClass), ns) where ns is a dict containing: {'a': 23, 'method': function-object, ...} and one or two other things automatically inserted for you. A factory function, being just a function, can't take advantage of any magic syntax. While you can put anything you like inside the function, the function can't see what's on the left hand side of the assignment to retrieve the name, so you have to manually provide it. -- Steven -- https://mail.python.org/mailman/listinfo/python-list