每个实例使用不同数量的类属性创建的类?

时间:2015-04-04 02:41:38

标签: python

我知道这听起来很通用,所以我会尽力解释这个案子。

我从一个过程,一些数据回来了。我想以一种我可以与之交互的格式组织这些数据,然后访问它。

到目前为止,我认为我可以创建一个简单的类,它是空的,并且在创建时它需要** kwargs并循环通过它们,将它们添加到类中。

虽然我不确定这是否是正确的方法。想象一下以下数据:

dict1={param1:a, param2:b, param3:c, param4:d}              #Operation1
dict2={param2:t, param1:2, param1:r}                        #Operation2
dict3={param1:1, param7:2, param2:4, param4:b, param3:m}    #Operation3

我想创建一个类,在创建时,将获取参数,从而得到从参数名称中获取的类属性名称,以及作为值的参数值:

myclass1(dict1)

myclass2.param1返回a,myclass1.param2返回b,依此类推

但如果我想使用dict2创建myclass,我也可以这样做:

myclass2(dict2)

myclass1.param2返回t,myclass2.param1返回2,依此类推

通过这种方式,我有一个带参数的名称,并且可以在以后检索它,同时我不必担心我的数据有多少元素,因为类总是得到数量参数,并使用字典中的键名称创建类属性。

有可能在python中以一种简单的方式实现这一点吗?我可以在字典中使用字典,但对于大数据集来说,它感觉完全复杂。

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

In [2]: dict1={'param1':'a', 'param2':'b', 'param3':'c', 'param4':'d'}

In [3]: class A(object):
   ...:     def __init__(self, params):
   ...:         for k, v in params.iteritems():
   ...:             setattr(self, k, v)
   ...:

In [4]: a = A(dict1)

In [5]: a.param1
Out[5]: 'a'

In [6]: a.param2

Out[6]: 'b'