Pytanie Python wzajemnie zależne klasy (okrągłe zależności)


Dużo szukałem, ale znajduję głównie przykłady programowania rekurencyjnego w pythonie. Oto pytanie:

Jak mogę to osiągnąć?

class A:
    b = B()

class B:
    a = A()

11
2018-06-19 13:08


pochodzenie


To nie jest rekursja, to zależność cykliczna. - geoffspear


Odpowiedzi:


Wszystko jest dynamiczne w Pythonie - nawet deklaracje klasowe. Nie ma nic, co mogłoby Cię zatrzymać, modyfikując zawartość klasy po początkowej deklaracji:

class A:
    pass

class B:
    a = A()

A.b = B()

NB: Jeśli nie znasz się na Pythonie, to pass słowo kluczowe po prostu pozwala powiedzieć "nic tutaj" - nie jest ważne, jeśli klasa A nie jest tak pusta jak w tym przykładzie!


8
2018-06-19 13:12



Fajnie, ale myślę, że to nie zadziała w polu __metaclass__... - dhill
to też by nie działało, jeśli ty from foo import A w innym pliku - Ahmed Aeon Axan