Конструктор dict
ожидает либо отображение, либо итерацию пар ключ / значение в качестве параметра, поэтому вашему классу необходимо либо реализовать протокол отображения, либо быть итеративным.
Вот пример того, как получить последний подход:
class Foo(object):
def __init__(self, x, y):
self.x = x
self.y = y
def __iter__(self):
return vars(self).iteritems()
Пример использования:
>>> dict(Foo(2, 3))
{'x': 2, 'y': 3}
Я не знаю, насколько это полезно. Вы могли бы просто сделать
>>> vars(Foo(2, 3))
{'x': 2, 'y': 3}
, который будет работать без реализации __iter__()
в вашем классе.