Ho una classe tupla nominata in Python
class Town(collections.namedtuple('Town', [
'name',
'population',
'coordinates',
'population',
'capital',
'state_bird'])):
# ...
Vorrei convertire le istanze di Town in dizionari. Non voglio che sia rigidamente legato ai nomi o al numero dei campi in una città.
C'è un modo per scriverlo in modo che io possa aggiungere più campi o passare una tupla di nome completamente diversa e ottenere un dizionario.
Non posso modificare la definizione della classe originale come nel codice di qualcun altro. Quindi ho bisogno di prendere un'istanza di una città e convertirla in un dizionario.
dict
invece di 'namedtuple', e passare la namedtuple nell'inizializzatore. Ricorda che se sei abituato a Cxx, class Town(x)
non è il costruttore, def __init__(self, *args, **kwargs)
al suo interno lo è.
dir
è solo un python integrato ... puoi eseguirlo su qualsiasi oggetto python, in una console o in uno script (dove restituisce un elenco che puoi stampare o fare qualunque cosa), e restituirà un elenco di (quasi ) tutti gli attributi dell'oggetto. utile se stai cercando di capire come funziona un oggetto sconosciuto.
dir
comando, che ti mostrerà i campi per qualsiasi oggetto ... che avrebbe mostrato_asdict
direttamente la funzione.