Eu tenho uma classe de tupla nomeada em python
class Town(collections.namedtuple('Town', [
'name',
'population',
'coordinates',
'population',
'capital',
'state_bird'])):
# ...
Gostaria de converter instâncias do Town em dicionários. Não quero que ele esteja rigidamente vinculado aos nomes ou ao número dos campos de uma cidade.
Existe uma maneira de escrevê-lo de forma que eu possa adicionar mais campos ou passar uma tupla nomeada totalmente diferente e obter um dicionário.
Não posso alterar a definição de classe original como está no código de outra pessoa. Então, preciso pegar uma instância de uma cidade e convertê-la em um dicionário.
dict
vez de 'namedtuple' e passar o nomeduplo para o inicializador. Lembre-se de que, se você está acostumado ao Cxx, class Town(x)
não é o construtor, está def __init__(self, *args, **kwargs)
dentro dele.
dir
é apenas um python embutido ... você pode executá-lo em qualquer objeto python, em um console ou em um script (onde retorna uma lista com a qual você pode imprimir ou fazer o que quer que seja) e retornará uma lista de (quase ) todos os atributos do objeto. útil se você estiver tentando descobrir como um objeto desconhecido funciona.
dir
comando, que mostrará os campos para qualquer objeto ... que mostraria a_asdict
função diretamente.