2012-02-14 8 views
0

辞書の値をクラスに設定することはできますか?
私がここに適切な方法でクラスを使用していますが、何かのような場合はわからない:それのない、実際にインスタンスタイプValueClass、になるこのコードを使用して辞書値をクラスに設定しますか?

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

+0

ここでは書式設定が正しくないかもしれませんが、ValueClassに値を渡していないようです。おそらく最後の行が 'res [k] = ValueClass(foo、foo2、foo3)'なので編集するかもしれませんか? –

答えて

1

、あなたがres[k]を設定する(これはIあなたの意思ではないと思いますか?)。

あなたはおそらくこれをしたいと思います:

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

+0

私はそれがOPが覚えているかどうかは分かりませんでした。 – Blender

+0

大変感謝しています!私はそれらの値でクラスを初期化しようとしていました。 – NewToPy

関連する問題