2012-02-14 2 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

+0

Возможно, форматирование здесь некорректно, но также кажется, что вы не передаете значения ValueClass. Может быть, отредактируйте, так что последняя строка будет 'res [k] = ValueClass (foo, foo2, foo3)'? –

ответ

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] a пример от ValueClass.

+0

Вы имели в виду 'res [k] = ValueClass (foo, foo2, foo3)'? – Gabe

+0

Я не был уверен, что это имел в виду ОП или нет. – Blender

+0

очень ценится! Я пытался инициализировать класс этими значениями. – NewToPy

Смежные вопросы