Я пишу скрипт python для сбора данных из разных файлов в объекты с рядом атрибутов. Каждый из этих атрибутов может в основном быть «нормально», «плохо» или «нет». Какие атрибутов являются «N/A» в соответствии с параметрами, которые я вызываю с помощью сценария.Python - Изменение атрибутов через словарь
Что я хочу сделать, это инициировать все объекты со всеми этими атрибутами, установленными по умолчанию «ok», а затем установить те, которые не были измерены, до «N/A» (который проверяется функцией, возвращающей список N/A-атрибуты). (Затем позже я собираю данные из файлов, чтобы установить атрибуты, которые являются «плохими», на «плохие».)
Я думал, что смогу сделать это через словарь, но он не работает или работает атрибуты?
class Myclass:
def __init__(self, ID):
self.ID = ID
self.at1 = "ok"
self.at2 = "ok"
self.at3 = "ok"
self.at4 = "ok"
# there are a LOT more of these attributes
def foo(unused):
for i in range(3):
blurb = Myclass(i)
unused_dic = {"at1":blurb.at1, "at2":blurb.at2,
"at3":blurb.at3, "at4":blurb.at4}
for key in unused:
unused_dic[key] = "N/A"
print blurb.ID, blurb.at1, blurb.at2, blurb.at3, blurb.at4
unused = ["at1","at3"] # this is returned by another function
foo(unused)
Выход этого:
0 ok ok ok ok
1 ok ok ok ok
2 ok ok ok ok
Но я бы ожидать, и хочу:
0 N/A ok N/A ok
1 N/A ok N/A ok
2 N/A ok N/A ok
Что я делаю не так, и как я могу сделать это правильно?
У вашего 'unused_dic' нет связи с' burb'. Вы просто создаете новый словарь, устанавливаете значения, а затем ничего не делаете с этим новым словарем. – sloth