Используйте self.__dict__
.Это словарь, представляющий пространство имен объекта.
class User:
...
def to_dict(self):
return dict(
[(k, v) for k, v in self.__dict__.iteritems() if not k.startswith('_')]
)
Обратите внимание, что, учитывая ваш фрагмент кода, dict, возвращаемый .to_dict()
, будет содержать ключ 'to_dict'
, так как функция не начинается с подчеркивания,Вероятно, простая ошибка в вашем посте.
Если список атрибутов, которые вы хотите включить в возвращаемый dict, невелик (и не сильно меняется), я предлагаю вам четко указать это и перечислить их
class User(object):
data_attributes = ('s_email', 's_password')
def to_dict(self):
return dict([(attr, getattr(self, attr) for attr in self.data_attributes])