Wielu miłych niespodzianek dostarcza wspomniana możliwość modyfikowania instancji.
class Osoba:
def __init__(self,imie="no",nazwisko="name"):
self.imie = imie
self.nazwisko = nazwisko
def show(self):
print(self.imie+" "+self.nazwisko)
o = Osoba("Jan","Kowalski")
o.show()
Jan Kowalski
del o.imie
o.show()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 6, in show
AttributeError: Osoba instance has no attribute 'imie'
No tak, ale zasadniczo to programista bierze odpowiedzialność za kod jaki pisze i musi brać pod uwagę różne przypadki.
Wiadomo, wszystko wychodzi w praniu.
Czy błąd powyższego typu w pythonie skutkuje natychmiastowym zakończeniem działania aplikacji, jeżeli byśmy zmodyfikowali jej klasę/instancję klasy dynamicznie podczas działania?
Pozwólcie, że napiszę dlaczego tak drążę ten temat. Mam kilkuletnie doświadczenie zawodowe programistyczne w Cpp( też innych technologiach, ale już raczej z ciekawości/uzależnienia). Otworzyłem firmę i zacząłem prowadzić szkolenia w zakresach, na które pozwalają mi moje kompetencje. Jednym z moich aktualnych planów jest rozpoczęcie szkolenia dla gamedeveloperów, gdzie osoby zainteresowane szkoleniem nie tylko zapoznają się z wybranym językiem programowania, ale jeżeli będą chętne, to będą mogły rozpocząć budować wspólny projekt, który będzie także ich współwłasnością.
Chciałbym także maksymalnie ograniczyć koszta takich osób za udział w szkoleniu (współcześnie dla niektórych wydatek 2000 zł za szkolenie to niestety duża suma).
Ideą projektu jest stworzenie prostej graficznie gry RTS, gdzie gracz zamiast sterować jednostkami, programuje dynamicznie ich AI. Od tego będą zależeć wynik potyczek pomiędzy graczami i to jak zachowa się dana jednostka na polu bitwy.
Do tego celu muszę dobrać odpowiednią technologię(czyli właściwy język programowania) i znaleźć odpowiedniego szkoleniowca do prowadzenia zajęć online(przynajmniej w odniesieniu do fundamentów języka, jeżeli nie miałem z nim większej styczności).
Jak na ten moment zainteresował mnie Python, ale nie wiem czy byłby na 100% dobrym wyborem, chociaż z drugiej strony słyszałem wiele dobrego o zaczynaniu nauki programowania od pythona.