Konwersja Obiektu do Stringa¶
Podczas pracy z klasami i obiektami, często niezbędne jest wyświetlenie obiektu (jego pól). Przeanalizuj poniższy przykład.
Powyższa funkcja print generuje string reprezentujący punkt p. Domyślna funkcjonalność zawarta w Python mówi nam, że p jest obiektem typu Point. Jednakże nie zwraca ona żadnych informacji na temat stanu punktu.
Aby rozbudować ilość informacji wyświetlanych o obiekcie, musimy dodać specjalną metodę o nazwie __str__, utrzymanej w tej samej konwencji nazewnictwa jak konstruktor - zawiera dwa podwójne podkreślenia na początku i końcu. Jest to powszechna zasada w Python dla metod specjalnych.
Metoda __str__ odpowiedzialna jest za zwrócenie tekstu zdefiniowanego podczas tworzenia klasy. Innymi słowy, Ty jako programista odpowiadasz za dane zwracane przy wywołaniu funkcji print. W rozpatrywanym przykładzie, zdecydowaliśmy, że string reprezentujący zawierać będzie wartości x i y, oraz dane identyfikacyjne. Wymaganym jest, aby metoda __str__ tworzyła i zwracała string.
W momencie uruchomienia powyższego programu, możesz zauważyć, że funkcja print zwraca zaprojektowany string.
Należy teraz zadać pytanie, czy nie wystarczyłoby użyć znanego już konwertera str, który zmienia obiekty w łańcuchy znaków?
I czy funkcja print automatycznie nie robi tego podczas wyświetlenia? Na oba pytania, można odpowiedzieć twierdząco, jednak jak widzieliśmy wcześniej, mechanizmy automatyczne nie do końca działają w sposób, w jaki chcemy.
Python zawiera wiele wbudowanych implementacji dla metod, które my jako programiści często chcemy zmodyfikować. Kiedy programista zmienia znaczenie metody specjalnej, mówimy o przesłonięciu metody. Należy również zwrócić uwagę, że funkcja str używa zaimplementowanej przez programistę metody __str__.