Operacja na nazwie zmiennych

0

Hey nie mogę poradzić sobie z pewnym problemem, nie wiem nawet jak zadać pytanie żeby poszukać rozwiązania w googlu. Mam plik conf.py który zawiera zmienne z wartościami True i False. Wygląda to tak:

module_abc = True
module_xyz = False
...

Drugi plik importuje plik conf.py i aby zmienić wartość zmiennej sprawa jest prosta wystarczy conf.module_abc = False i po sprawie. Ja potrzebuje zrobić coś takiego:

module_name = ["abc", "xyz"]
for module in module_name:
       conf.module_ + module_name = False    # chcę aby ta linijka została rozpoznana przez python jako conf.module_abc = False

Jest taka możliwość albo jakiś inny sposób na to? :) Pomyślałem, że można to zrobić tak:

if "abc" in module_name:
      conf.module_abc = False
...

ale to mało eleganckie...

1

Nie wiem, czy chodzi Ci o to, ale spróbuj tak:

import inspect
import conf as cfg

for el in inspect.getmembers(cfg):
    if not (el[0].startswith('__') and el[0].endswith('__')):
        setattr(cfg, el[0], False)

Obie zmienne zostaną ustawione na False.

0

Pyxis dzięki, musiałem tylko dodać jeden argument do Twojego rozwiązania:

        for el in inspect.getmembers(conf):
            if not (el[0].startswith('__') and el[0].endswith('__')):
                if el[0] in module_name:

                    setattr(conf, el[0], False)

Działą świetnie dzięki :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1