Monday, December 22, 2008

Python - polimorfizm z punktu widzenia programisty C++

Właściwie temat był już poruszany w wątku, w którym napisałem kilka słów o wyłapywaniu wyjątków.

Ponieważ zarówno w przypadku metod jak i funkcji nie trzeba definiować typu obiektów, które są do nich przekazywane wszystkie metody zachowują się tak jakby były wirtualne. Choć ciężko o tym mówić przy braku deklaracji typu parametru - po prostu są wywoływane na obiekcie przekazanym do funkcji czy metody jaki by ten obiekt nie był. Tak zwany polimorfizm najlepiej zobaczyć we wspomnianym już powyżej przykładzie wyłapywania wyjątków. Wyłapując wyjątek klasy bazowej możemy obsługiwać tym samym blokiem również wszystkie wyjątki klas pochodzących od niej (pochodnych). W C++ wymaga to użycia funkcji wirtualnych :] (jak można zobaczyć tutaj). Python po prostu - tak działa :) Jest to jego naturalne zachowanie, o które nie musimy w żaden sposób zabiegać.

No comments: