[Python-ideas] A mutable alternative to namedtuple
Luciano Ramalho
luciano at ramalho.org
Tue Mar 17 17:52:04 CET 2015
Sometimes we need a simple class to hold some mutable attributes,
provide a nice repr, support == for testing, and support iterable
unpacking, so you can write:
>>> p = Point(3, 4)
>>> x, y = p
That's very much like the classes built by namedtuple, but mutable.
I propose we add to the collections module another class factory. I am
calling it plainclass, but perhaps we can think of a better name. Here
is how it would be used:
>>> import collections
>>> Point = collections.plainclass('Point', 'x y')
The signature of the plainclass function would be exactly the same as
namedtuple, supporting the same alternative ways of naming the
attributes.
The semantics of the generated Point class would be like this code:
https://gist.github.com/ramalho/fd3d367e9d3b2a659faf
What do you think?
Cheers,
Luciano
PS. I am aware that there are "Namespace" classes in the standard
library (e.g. [2]). They solve a different problem.
[2] https://docs.python.org/3/library/argparse.html#argparse.Namespace
--
Luciano Ramalho
| Author of Fluent Python (O'Reilly, 2015)
| http://shop.oreilly.com/product/0636920032519.do
| Professor em: http://python.pro.br
| Twitter: @ramalhoorg
More information about the Python-ideas
mailing list