Notez que la meilleure pratique dans Python 2.7 est d'utiliser nouveau style (non nécessaire avec Python 3), c'est-à-dire
class Foo(object):
...
De plus, il y a une différence entre un "objet" et une "classe". Pour construire un dictionnaire à partir d'un objet arbitraire objet il suffit d'utiliser __dict__
. En général, vous déclarez vos méthodes au niveau de la classe et vos attributs au niveau de l'instance, donc __dict__
devrait convenir. Par exemple :
>>> class A(object):
... def __init__(self):
... self.b = 1
... self.c = 2
... def do_nothing(self):
... pass
...
>>> a = A()
>>> a.__dict__
{'c': 2, 'b': 1}
Une meilleure approche (suggérée par robert dans les commentaires) est la fonction intégrée vars
fonction :
>>> vars(a)
{'c': 2, 'b': 1}
Alternativement, en fonction de ce que vous voulez faire, il pourrait être agréable d'hériter de dict
. Alors votre classe est déjà un dictionnaire, et si vous voulez vous pouvez remplacer getattr
et/ou setattr
pour appeler et régler la dictée. Par exemple :
class Foo(dict):
def __init__(self):
pass
def __getattr__(self, attr):
return self[attr]
# etc...