Importowanie rzeczy na podstawie nazwy przy uzyciu instrukcji warunkowej

1

W sumie do konca nie wiedzialem jak nazwac ten temat, wiec postaram sie +/- wytlumaczyc oco mi chodzi.
Mam jeden modul a w nim zdefiniowane 4 klasy ktore sa kontenerami dla zmiennych (Dla mnie to taka symulacja structa z cpp xd). Cos takiego:

class elo:
    zmienna = "dupa"

class elo2:
    zmienna = "dupa"

class elo3:
    zmienna = "dupa"

__all__ = ['elo', 'elo2', 'elo3']

Te zmienne to selektory a sama klasa reprezentuje konkretny web. W mojej klasie bazowej importuje caly modul z powyzszymi klasami i potrzebuje wywolac konkretna na podstawie argumentu passowanego do inicjalizacji obiektu. Obecnie mam cos takiego i dziala:

self.selectors = ""
for x in page_selectors.__all__:
            if x == self.web:
                exec (f"self.selector = page_selectors.{x}")
                break

Szukam lepszego rozwiazania bo exec sam w sobie potrafi byc problematyczny. Samo ide widzi to jako blad no i ma racje -> W momencie proby wywolania

self.selectors.zmienna

ide nadal mysli, ze probuje wywolac cos z pustego stringa. Byc moze ktos ma solidniejsze rozwiazanie ? :) Nigdy nie potrzebowalem czegos takiego, ale tym razem stawiam na 100% automatyzacje skryptu.

3

W sensie

import page_selectors
# ...
self.selectors = getattr(page_selectors, self.web)

...?

Do trudniejszych rzeczy jest importlib.

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