Mam nazwaną klasę krotki w Pythonie
class Town(collections.namedtuple('Town', [
'name',
'population',
'coordinates',
'population',
'capital',
'state_bird'])):
# ...
Chciałbym zamienić instancje Town na słowniki. Nie chcę, aby było to sztywno związane z nazwami lub liczbą pól w mieście.
Czy istnieje sposób na zapisanie go w taki sposób, że mógłbym dodać więcej pól lub przekazać zupełnie inną nazwaną krotkę i uzyskać słownik.
Nie mogę zmienić oryginalnej definicji klasy, ponieważ znajduje się w czyimś kodzie. Muszę więc pobrać wystąpienie Town i przekonwertować je na słownik.
dict
zamiast „namedtuple” i przekazanie namedtuple do inicjatora. Pamiętaj, że jeśli jesteś przyzwyczajony do Cxx, class Town(x)
to nie konstruktor, ale w def __init__(self, *args, **kwargs)
środku jest.
dir
jest po prostu wbudowanym pythonem ... możesz go uruchomić na dowolnym obiekcie Pythona, w konsoli lub w skrypcie (gdzie zwraca listę, którą możesz wydrukować lub zrobić cokolwiek), a zwróci listę (prawie ) wszystkie atrybuty obiektu. przydatne, jeśli próbujesz dowiedzieć się, jak działa nieznany obiekt.
dir
polecenie, które pokaże pola dla dowolnego obiektu ... który_asdict
bezpośrednio pokazałby funkcję.