Eu tenho um objeto python com vários atributos e métodos. Eu quero iterar sobre os atributos do objeto.
class my_python_obj(object):
attr1='a'
attr2='b'
attr3='c'
def method1(self, etc, etc):
#Statements
Quero gerar um dicionário que contenha todos os atributos dos objetos e seus valores atuais, mas quero fazê-lo de maneira dinâmica (se mais tarde adicionar outro atributo, não preciso me lembrar de atualizar também minha função).
No php, variáveis podem ser usadas como chaves, mas os objetos em python são indescritíveis e, se eu usar a notação de ponto, cria um novo atributo com o nome da minha var, que não é minha intenção.
Apenas para esclarecer as coisas:
def to_dict(self):
'''this is what I already have'''
d={}
d["attr1"]= self.attr1
d["attr2"]= self.attr2
d["attr3"]= self.attr3
return d
·
def to_dict(self):
'''this is what I want to do'''
d={}
for v in my_python_obj.attributes:
d[v] = self.v
return d
Atualização: com atributos, quero dizer apenas as variáveis deste objeto, não os métodos.
predicate
argumento opcional para transmitir uma chamada que filtraria as funções (ligadas?) (que se livraria dos métodos).