2012-02-14 82 views
0

是否可以將字典值設置爲類?
不知道如果我使用一類在這裏適當的方式,但一些諸如:將字典值設置爲一個類?

class ValueClass: 

    def __init__(self,foo,foo2,foo3): 

     self.foo=foo 
     self.foo2=foo2 
     self.foo3=foo3 

res={} 

with open('foo.txt','r') as lines: 

    for line in lines: 
     k=line.split()[4] 
     foo=line.split()[5] 
     foo2=line.split()[6] 
     foo3=line.split()[7] 
     res[k]=ValueClass 
+2

是的,這是可能的。你爲什麼想這樣做?你丟掉你賦給'foo','foo2'和'foo3'的值。你真的想要一個設置了這些屬性的ValueClass實例*嗎? – geoffspear 2012-02-14 03:36:36

+0

也許這裏的格式不正確,但它似乎也沒有將任何值傳遞給ValueClass。也許編輯所以最後一行是'res [k] = ValueClass(foo,foo2,foo3)'? – 2012-02-14 07:12:10

回答

1

使用此代碼,可以設置res[k]ValueClass類型,而不是實際上它的一個實例(我猜猜不是你的意圖?)。

你可能會想這樣做:

class ValueClass(object): 
    def __init__(self, foo=None, foo2=None, foo3=None): 
    self.foo = foo 
    self.foo2 = foo2 
    self.foo3 = foo3 

res = {} 

for line in lines: 
    k, foo, foo2, foo3 = line.split()[4:7] 
    res[k] = ValueClass() 

如果要初始化這些值類,你可以這樣做:

for line in lines: 
    k, foo, foo2, foo3 = line.split()[4:7] 
    res[k] = ValueClass(foo, foo2, foo3) 

這可以讓你設置類的屬性之後,如您製作res[k]實例ValueClass

+0

你是不是指'res [k] = ValueClass(foo,foo2,foo3)'? – Gabe 2012-02-14 03:40:31

+0

我不確定這是OP的想法與否。 – Blender 2012-02-14 03:41:57

+0

非常感謝!我試圖用這些值初始化班級。 – NewToPy 2012-02-14 13:32:05