将POPO /值对象转换为Python中的字典用作kwargs

时间:2014-05-21 00:38:49

标签: python dictionary value-objects keyword-argument

我有一个返回类的值对象的方法,如下所示:

def get_val_obj():
    return SomeValueObject()

我有另一个方法,它接受字典和关键字参数:

def some_other_method(some_dict, some_other_argument, **kwargs):
    """Do some stuff"""

最后在调用方法中:

some_val_obj_1 = get_val_obj()
some_val_obj_2 = get_val_obj()

some_other_method(some_val_obj_1.__dict__, 'blah', **some_val_obj_2.__dict__)

我看到某处如果在Value Object中有一个设置属性的init方法,你可以使用

.__dict__

转换popo。不起作用,您认为我的问题的最佳方法是什么?我可以直接在get_val_obj()中返回一个字典,但是我想保留它以便它返回一个POPO。是否有其他方法完全可以让我失踪?谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

我相信你指的是以下内容:

class Foo(object):

    def __init__(self, **kwargs):
        self.__dict__.update(kwargs)


foo = Foo(a=1, b=2, c=3)
print foo.a
print foo.b
print foo.c

这基本上只是一个类,其构造函数通过它的__dict__属性更新它的内部属性。所有? Python中的对象有一个__dict__来保存对象的属性。

请参阅:Data Model