Pyton

Przeciążanie operatorów w Pythonie

Przeciążanie operatorów w Pythonie
Przeciążenie odpowiada tendencji metody lub operatora do działania na wiele sposobów w sensie programowania, w oparciu o parametry dostarczone do techniki lub operandów, na których działa operator. Przeciążenie operatora oznacza, że ​​przedłużone znaczenie jest nadawane powyżej ich wstępnie zdefiniowanego znaczenia funkcjonalnego.  Operatory Pythona działają dla klas wbudowanych, ale dla różnych typów ten sam operator działa inaczej. W tym przewodniku zobaczymy, jak możemy wykonać przeciążanie operatorów w Pythonie.

Na przykład operator + może matematycznie dodawać dwie liczby, łączyć dwie listy lub łączyć ciągi. Oto prosty program w pythonie pokazujący operator + używany do dodawania i łączenia.

Co się stanie, jeśli użyjemy tych operatorów dla obiektów w określony przez użytkownika klasa? Weźmy następujący program, który próbuje symulować punkt na schemacie wymiarów 2D. Poniżej widać to już, ponieważ Python nie rozumiał, jak połączyć 2 instancje współrzędnych, a Błąd typu jest wygenerowany.

Możemy wykonać to zadanie w Pythonie poprzez przeciążenie operatorów, ale przede wszystkim zrozummy specjalne metody.

Specjalne metody magiczne

Metody klas zaczynające się od podwójne podkreślenie są klasyfikowane w Pythonie jako metody specjalne lub funkcje magiczne. Funkcje, które służą do wykonywania określonych czynności. Zwykłe metody, które opisujemy dla klasy, nie są takimi funkcjami. Jednym z nich byłby __w tym_() funkcja, o której wspomnieliśmy powyżej. Za każdym razem, gdy budujemy nowy obiekt w tej klasie, nazywa się to. Wyrenderujemy naszą klasę zgodną z funkcjami wbudowanymi za pomocą funkcji magicznych. W Pythonie istnieje kilka innych funkcji specjalnych.

Operatory binarne lub matematyczne

Oto szczegóły magicznych funkcji do przeciążania binarnych lub matematycznych operatorów Pythona.

Operatory relacji lub porównania

Poniżej znajdują się szczegóły magicznych funkcji do przeciążania porównania Pythona lub operatorów relacyjnych.

Operatorzy przypisania

Oto szczegóły niektórych magicznych funkcji do przeciążania operatorów przypisania w kodzie Pythona.

Teraz nadszedł czas, aby rzucić okiem na kilka przykładowych kodów, gdy używamy wspomnianych powyżej magicznych metod i przeciążamy niektóre operatory.

Przeciążaj operatory binarne lub matematyczne

Przykład 01: Operator dodawania
Będziesz musiał wymusić __Dodaj_() metoda w klasie, aby przeciążyć + operator. Wielki obowiązek przybywa z wielką siłą. Wewnątrz tej metody możesz zrobić wszystko, co chcesz. Ale o wiele bardziej racjonalne jest zwrócenie 'Współrzędne obiekt sumy współrzędnych.

Kiedy spróbowałeś c1 + c2, Python faktycznie nazywa swoją magię .Metoda __add__() jako c1.__dodaj__(c2) lub współrzędne.__dodaj__(c1,c2).

Przykład 02: Operator mnożenia
Podobnie, możesz nawet przeciążyć kilka operatorów binarnych za pomocą funkcji magicznych. W tym samym przykładzie, przeciążając operator mnożenia, otrzymujemy 2, 6 jako nasza odpowiedź na magiczną funkcję.

Przykład 03: Operator odejmowania
Używając operatora odejmowania, otrzymaliśmy -1, -1 jako nasza odpowiedź.

Przykład 04: Operator mocy
Przeciążyliśmy moc operator podczas korzystania z funkcji magii mocy; mamy 1, 8.

Przykład 05: Operator modułu
Przeciążając operator modułu, użyliśmy __mod__ magiczna funkcja, aby uzyskać moduł.

Możesz także użyć innych operatorów matematycznych, e.sol., operator podziału i podziału piętra, do przeciążania.

Przeciążanie operatorów porównania

Python nie ogranicza przeciążania operatorów tylko do operatorów binarnych lub arytmetycznych. Jesteśmy również w stanie przeciążyć operatorów porównania.

Przykład 01: Mniej niż operator
Załóżmy, że wymagaliśmy mniej niż '<' symbol w naszym 'Współrzędne klasa do zaimplementowania. Porównajmy wartość tych argumentów ze źródła i udzielmy odpowiedzi. Jak zwykle można go zastosować. Mamy trzy obiekty i porównujemy je w instrukcjach print. W rezultacie otrzymamy ten obiekt c1 jest mniej niż c2, więc to wychodzi Prawdziwe. Z drugiej strony, c2 i c1bardziej doskonałe niż c3; dlatego oba Fałszywe wyjście.

Przykład 02: Nie równa operatorowi
Teraz przeciążam Nie równe (!=) operator porównania, dostaniesz Prawdziwe w przypadku pierwszej i drugiej instrukcji print, ponieważ spełnia warunek, że oba obiekty nie są równe. Z drugiej strony, obiekt 1 daje to samo, co obiekt 3, co nie spełnia warunku Nierówne. Dlatego trzecia instrukcja print wypisuje Fałszywe w rezultacie.

Przykład 03: Większe lub równe operatorowi
Wypróbujmy ten sam przykład dla przeciążenia większe lub równe do operatora. W przypadku instrukcji pierwszego wydruku mamy 2 >= 13, który jest nie prawda; dlatego daje Fałsz. W drugim i trzecim wydruku instrukcji otrzymaliśmy 13>=2 i 2>=2, odpowiednio. Oba są Prawdziwe ponieważ spełniają warunek większy lub równy.

Wypróbuj inne operatory porównania, e.sol., bardziej znaczące niż, równe, „mniejsze lub równe” również w Twoim kodzie.

Przeciąż operatorów przypisania

Zobacz przykład przeciążenia operatora przypisania. Podobny przykład bierzemy z przeciążeniem '-=' operator przypisania. Zdefiniowaliśmy dwa obiekty o wartościach współrzędnych y i z. Pierwszy obiekt c1 przekazuje swoje wartości do 'samego siebie.ty i 'samego siebie.z' odpowiednio zmienne. Z drugiej strony obiekt c2 przekazuje swoje wartości do 'inny.ty i 'inny.z'.

Obiekt c1 ma wartości samego siebie.y=1 i samego siebie.z=1 teraz. Obiekt c2 wartości 'inny.y = -2' i 'inny.z = -3' został przekazany do odejmowane od obiektu c1 wartości. W rezultacie wyniki c1 - c2 samego siebie.y - inne.y = 1-(-2) i samego siebie.z - inne.z = 1-(-3). Obliczony wynik, czyli 3 i 4, został zapisany w 'self.x” i „ja”.z' ze względu na operator przypisania '=.' Podczas drukowania ten kod wypisze wynik obiektu c1, który ma dwie zmienne samego siebie.y = 3 i samego siebie.z = 4.

Wniosek

Staramy się uwzględnić wszystkie operatory w Twoim kodzie, aby lepiej zrozumieć przeciążenie operatorów.

Emulate Mouse clicks by hovering using Clickless Mouse in Windows 10
Using a mouse or keyboard in the wrong posture of excessive usage can result in a lot of health issues, including strain, carpal tunnel syndrome, and ...
Add Mouse gestures to Windows 10 using these free tools
In recent years computers and operating systems have greatly evolved. There was a time when users had to use commands to navigate through file manager...
Control & manage mouse movement between multiple monitors in Windows 10
Dual Display Mouse Manager lets you control & configure mouse movement between multiple monitors, by slowing down its movements near the border. Windo...