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