Ich habe eine benannte Tupelklasse in Python
class Town(collections.namedtuple('Town', [
'name',
'population',
'coordinates',
'population',
'capital',
'state_bird'])):
# ...
Ich möchte Town-Instanzen in Wörterbücher konvertieren. Ich möchte nicht, dass es fest mit den Namen oder der Nummer der Felder in einer Stadt verbunden ist.
Gibt es eine Möglichkeit, es so zu schreiben, dass ich weitere Felder hinzufügen oder ein ganz anderes benanntes Tupel übergeben und ein Wörterbuch erhalten kann?
Ich kann die ursprüngliche Klassendefinition nicht wie im Code eines anderen ändern. Also muss ich eine Instanz einer Stadt nehmen und sie in ein Wörterbuch konvertieren.
dict
anstelle von 'namedtuple' verwenden und das namedtuple an den Initialisierer übergeben möchten. Denken Sie daran, dass, wenn Sie an Cxx gewöhnt sind, class Town(x)
nicht der Konstruktor def __init__(self, *args, **kwargs)
darin ist.
dir
ist nur ein integrierter Python ... Sie können es auf jedem Python-Objekt, in einer Konsole oder in einem Skript ausführen (wo es eine Liste zurückgibt, die Sie drucken oder mit was auch immer tun können), und es wird eine Liste von (fast) zurückgeben ) alle Attribute des Objekts. hilfreich, wenn Sie herausfinden möchten, wie ein unbekanntes Objekt funktioniert.
dir
Befehl an, der Ihnen die Felder für jedes Objekt anzeigt ... das die_asdict
Funktion direkt angezeigt hätte .