2011-08-03 277 views
0

我有一个大的字典。我想将每个键值对分配给一个类的属性。目前我在下面的代码段中有一些内容。它的作品,但它不漂亮。有一个更好的方法吗?从字典中分配属性值

伪蟒蛇片段:

config = A large dictionary 

self.Width = config['width'] 
self.Height = config['height'] 
self.Text = config['text'] 
self.Font = config['font'] 
etc... 

回答

5

很简单:

for key, value in config.iteritems(): 
    # Customize key here, for example transform 'text_height' to 'TextHeight' or 
    # use 'key.title()' to obtain titlecased keys... 
    setattr(self, key, value) 

你可能想要做key.title(),但实例属性建议是在python全部小写。

+1

使用'key.title()'转换“宽度”键“宽”属性。 – PaulMcG

+0

@Paul:你快了;) – GaretJax

+0

考虑多字键的情况可能会很好。例如,应将'config ['text_height']'分配给'self.TextHeight'? –

2

,如果你不关心的首字母大写,你可以只是做:

self.__dict__.update(config) 
+0

如果类定义了“@属性”或定制了“__setattr__”方法,则不起作用。 – GaretJax

+0

@GaretJax:我承认 - 这有点破解。 ...只是把它扔到那里,看看我是否会发火焰:)这两种情况似乎并没有太大的限制(可能还有一些隐藏的警告) – Gerrat

+0

是的,就像老式的课程...;) – GaretJax