У меня есть названный класс кортежа в Python
class Town(collections.namedtuple('Town', [
'name',
'population',
'coordinates',
'population',
'capital',
'state_bird'])):
# ...
Я хотел бы преобразовать экземпляры Town в словари. Я не хочу, чтобы он был жестко привязан к именам или количеству полей в городе.
Есть ли способ написать это так, чтобы я мог добавить больше полей или передать совершенно другой именованный кортеж и получить словарь.
Я не могу изменить исходное определение класса, как в чужом коде. Поэтому мне нужно взять экземпляр Town и преобразовать его в словарь.
dict
вместо namedtuple и передать namedtuple в инициализатор. Помните, что если вы привыкли к Cxx, class Town(x)
это не конструктор, def __init__(self, *args, **kwargs)
он внутри.
dir
это просто встроенный Python ... вы можете запустить его на любом объекте Python, в консоли или в скрипте (где он возвращает список, который вы можете распечатать или сделать с чем угодно), и он вернет список (почти ) все атрибуты объекта. полезно, если вы пытаетесь понять, как работает неизвестный объект.
dir
команду, которая покажет вам поля для любого объекта ... который бы показывал_asdict
функцию напрямую.