Definiowanie artybutów w klasie
Witam,
mam następujący problem - myślę, że dość podstawowy; aczkolwiek szukałem rozwiązania i jak na razie "kiszka".
Mając następujący kod:
class JakasKlasa:
pass
class InnaKlasa:
atrybut_jakasKlasa = JakasKlasa # linia budzaca kontrowersje
def __init__(self, atrybut):
self.atrybut_jakasKlasa = atrybut
pierwszy_obiekt = JakasKlasa()
obiektKlasy = InnaKlasa(pierwszy_obiekt) #tutaj odpalam debugger
W tej sytuacji odpalając debuggera mogę podglądnąć że tak na prawdę atrybut_jakasKlasa w obiekcie InnaKlasa ma jakby 2 wartości - jedną jest niezainicjalizowana instancja klasy JakasKlasa, a druga wartość to przypisany obiekt klasy JakasKlasa podany jako argument dla inita (w lini wywolania debuggera).
Moje pytanie brzmi - co właściwie robi Python w "lini budzącej kontrowersje"?
To nie jest do typowanie (logiczne :P), ale koniecznie jest tam podanie "czegoś", bo inaczej jest zwracany błąd. Poza tym dlaczego tak "dziwna" wartość początkowa atrybutu nie jest po prostu zastępowana wartością z argumentu (co jest w istocie wykonywane w init )
Mam nadzieję, że wyraziłem się dostatecznie jasno. Dzięki.