J'ai un module avec collection:
import collections
named_Tuple_sex = collections.namedtuple(
'FlightsResultsSorter',
['TotalPriceASC',
'TransfersASC',
'FlightTimeASC',
'DepartureTimeASC',
'DepartureTimeDESC',
'ArrivalTimeASC',
'ArrivalTimeDESC',
'Airlines']
)
FlightsResultsSorter = named_Tuple_sex(
FlightsResultsSorter('TotalPrice', SortOrder.ASC),
FlightsResultsSorter('Transfers', SortOrder.ASC),
FlightsResultsSorter('FlightTime', SortOrder.ASC),
FlightsResultsSorter('DepartureTime', SortOrder.ASC),
FlightsResultsSorter('DepartureTime', SortOrder.DESC),
FlightsResultsSorter('ArrivalTime', SortOrder.ASC),
FlightsResultsSorter('ArrivalTime', SortOrder.DESC),
FlightsResultsSorter('Airlines', SortOrder.ASC)
)
et dans un autre module j'itère par cette collection et je veux obtenir le nom de l'article:
for x in FlightsResultsSorter:
self.sort(x)
donc dans le code, je veux à la place x (qui est un objet) en passant par exemple "DepartureTimeASC" ou "ArrivalTimeASC".
Comment puis-je obtenir ce nom?
Meilleures salutations
from itertools import izip
for x, field in izip(FlightsResultsSorter, named_Tuple_sex._fields):
print x, field
Vous pouvez également utiliser FlightsResultsSorter._asdict()
pour obtenir un dict.
Si vous essayez d'obtenir les noms réels, utilisez le _fields
attribut:
In [50]: point = collections.namedtuple('point', 'x, y')
In [51]: p = point(x=1, y=2)
In [52]: for name in p._fields:
....: print name, getattr(p, name)
....:
x 1
y 2