Metody Dunder są niezwykle silnymi metodami wewnętrznymi Python, które można zastosować do opracowania złożonych klas. Ta lekcja zawiera przewodnik krok po kroku metod Python i sposób ich używania, wraz z przykładami. Spójność popularności Pythona można przypisać popularności języka. W przypadku wewnętrznych metod, takich jak ABS (), len (), sorted () i wielu innych, Python pozwala wdrożyć niestandardowe obiekty. Wszystko, co musisz teraz zrobić, to dodać kilka unikalnych metod do swojej klasy (metody Dunder).
W tym artykule zastosowaliśmy frazy takie jak metody Dunder, Metody Magiczne i specjalne techniki, z których wszystkie należą do tej samej kategorii. Zanim przejdziemy do samouczka, powinieneś być czymś świadomym. Programiści Python, którzy mają doświadczenie w programowaniu obiektowym (OOP) rozpoznają metodę __init__. Metoda Dunder została nazwana na cześć podwójnych podkreśleń, które są znane jako Dunder w Pythonie. Ponieważ w Ruby są magiczne metody, które spełniają ten sam cel, niektórzy programiści Python odnoszą się do nich jako taki w Python. Zwykle nazywamy je specjalnymi metodami, ponieważ tak nazywa ich instrukcja Pythona. W rezultacie, jeśli widzisz te metody w Pythonie, załóżmy, że są to specjalne metody.
Przykład 1:
Podobnie do konstruktorów w innych językach programowania, gdy powstaje instancja klasy, funkcja __init__ do inicjalizacji jest wywoływana bez żadnego wywołania. Na zajęciach Pythona „__init__” jest metodą zastrzeżoną. W terminologii zorientowanej na obiekty jest on określany jako funkcja object () [natywny kod]. Ta metoda jest wywoływana, gdy obiekt jest tworzony z klasy, aby umożliwić klasie zapełnienie jego właściwości. Możemy użyć operatora „+” do połączenia dwóch ciągów bez konieczności stosowania jawnego typu typu z powodu tych metod. Oto szczegółowy przykład tego, jak to wykonać. Najpierw zadeklarowaliśmy naszą klasę smyczkową, a następnie funkcja magii, aby utworzyć obiekt. Tworzenie obiektów jest zakończone po kodzie sterownika, a lokalizacja obiektu jest zgłaszana na końcu.
Powyższe wiersze kodu po prostu drukują adres pamięci obiektu ciągów.
Przykład 2:
Skorzystamy z metody __repr__ do przedstawienia naszego obiektu w poniższym przykładzie. Metoda magiczna __repr__ reprezentuje instancję klasową w ciągu. Kiedy próbujemy wydrukować obiekt klasy, wywoływana jest funkcja __repr__, co daje ciąg. Domyślnie reper () zwraca reprezentację ciągu dostarczonej do funkcji eval. Domyślnie obiekt klasy niestandardowej zawiera ciąg w nawiasach kątowych zawierających nazwę i adres obiektu. Z wyjątkiem dodania metody __repr__ po zastosowaniu metody magicznej do zainicjowania obiektu, kod jest taki sam jak poprzednio.
Tutaj widać, że powyższe z powodzeniem wyświetliło ciąg.
Przykład 3:
Teraz dodamy funkcję __add__ do klasy ciągów. Atrybuty instancji klasy są dodawane za pomocą metody __add__ magicznej. Udawajmy, że Object1 należy do klasy A i Object2 do klasy B i że obie te klasy mają atrybut o nazwie „A”, który zawiera liczbę całkowitą. Po zakończeniu obiektu operacji1 + obiekt2 funkcja __add__ domyślnie dodaje atrybuty tych obiektów, takie jak Object1.A + obiekt2.A. Ponownie inicjowaliśmy klasę ciągu w kodzie, jak widać w pierwszym wierszu kodu. Następnie wykorzystaliśmy magiczny sposób na rozpoczęcie obiektu. Obiekt ciągu został następnie wydrukowany za pomocą metody __add__. Obiekt jest tworzony po kodzie sterownika, który jest następnym wierszem kodu. W ostatnim wierszu kodu połączyliśmy obiekt ciągów z ciągiem.
Ciąg klas:
Poniżej znajduje się wyjście wyżej napisanego kodu.
Wniosek:
Metody magiczne są metodami Python z podwójnymi podkoszulkami na początku i wnioskiem. Metody lub techniki Dunder to dla nich inna nazwa. Metody magiczne nie są przeznaczone bezpośrednio przez użytkownika; Zamiast tego są nazywane wewnętrznie przez klasę w reakcji na określone działanie. Metoda __add __ () jest wywoływana wewnętrznie, gdy używasz operatora + do dodania dwóch liczb, na przykład. Wbudowane klasy Pythona definiują wiele magicznych metod. Aby dowiedzieć się, ile magicznych metod odziedziczyła klasa, możesz użyć funkcji dir ().