Operacja na nazwie zmiennych

Operacja na nazwie zmiennych
ZA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 20
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:

Kopiuj
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:

Kopiuj
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:

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

ale to mało eleganckie...

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5025
Pyxis
  • Rejestracja: dni
  • Ostatnio: dni
1

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

Kopiuj
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.

ZA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 20
0

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

Kopiuj
        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 :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.