J'ai une classe de tuple nommée en python
class Town(collections.namedtuple('Town', [
'name',
'population',
'coordinates',
'population',
'capital',
'state_bird'])):
# ...
J'aimerais convertir les instances de Town en dictionnaires. Je ne veux pas qu'il soit strictement lié aux noms ou au nombre de champs dans une ville.
Existe-t-il un moyen de l'écrire de telle sorte que je puisse ajouter plus de champs, ou passer un tuple nommé entièrement différent et obtenir un dictionnaire.
Je ne peux pas modifier la définition de classe d'origine car elle est dans le code de quelqu'un d'autre. Je dois donc prendre une instance d'une ville et la convertir en dictionnaire.
dict
au lieu de 'namedtuple', et passez le namedtuple dans l'initialiseur. N'oubliez pas que si vous êtes habitué à Cxx, ce class Town(x)
n'est pas le constructeur, à l' def __init__(self, *args, **kwargs)
intérieur.
dir
est juste un python intégré ... vous pouvez l'exécuter sur n'importe quel objet python, dans une console ou dans un script (où il renvoie une liste que vous pouvez imprimer ou faire quoi que ce soit avec), et il renverra une liste de (presque ) tous les attributs de l'objet. utile si vous essayez de comprendre comment fonctionne un objet inconnu.
dir
commande, qui vous montrera les champs pour n'importe quel objet ... qui aurait montré la_asdict
fonction directement.