how to control formatting of a namedtuple in a list
Boylan, Ross
Ross.Boylan at ucsf.edu
Thu Nov 17 18:04:56 EST 2016
Even after defining custom __str__ and __format__ methods they don't affect the display of objects when they are in a list. Is there a way to change that, other than explicitly converting each list element to a string?
The last line of output below shows that when I format the list I get standard formatting of my objects instead of my custom format.
Code
#! /usr/bin/python3
from collections import namedtuple
class Foo(namedtuple("Foo", "x")):
__slots__ = ()
def __str__(self):
return "foolish({})".format(self.x)
def __format__(self, spec):
return self.__str__()
f=Foo(4)
print(f)
print(str(f))
print("{}".format(f))
print("{}".format([f])) # a list with one f
Output
foolish(4)
foolish(4)
foolish(4)
[Foo(x=4)]
I'm running Python 3.4.
Thanks.
Ross
More information about the Python-list
mailing list