Programowanie obiektowe w Pythonie

Programowanie obiektowe w Pythonie
Wiele funkcji istnieje w programowaniu obiektowym (OOP) w celu opracowania dowolnej prostej i złożonej aplikacji. Służy do uporządkowania kodu na podstawie obiektu zawierającego atrybuty i zachowania, a każdy obiekt jest instancją określonej klasy. Programy OOP są bardziej wydajne niż programowanie funkcjonalne i łatwe do zrozumienia. To podejście do programowania jest bardziej odpowiednie do opracowywania dużych i złożonych projektów, które są podzielone na grupy. Python to bardzo popularny język programowania do obsługi programowania funkcjonalnego i obiektowego. Trzy główne cechy OOP to dziedzictwo, enkapsulacja i polimorfizm. Jak napisać program zorientowany na obiekt w Pythonie z podstawowych i zastosowań trzech głównych funkcji OOP za pomocą skryptu Pythona, opisano w tym samouczku.

Zawartość:

Uczenie się programowania obiektowego w Pythonie z podstaw wyjaśniono tutaj, omawiając następujące tematy z przykładami.

  1. Klasa i obiekt
  2. Konstruktor
  3. Dziedzictwo
  4. Kapsułkowanie
  5. Wielopostaciowość
  6. Getter i setter
  7. Operator przeciążenia i funkcja

Klasa i obiekt:

W programowaniu obiektowym, klasa służy do deklarowania struktury danych zdefiniowanej przez użytkownika, która zawiera zestaw atrybutów. Atrybutami mogą być zmienne klasowe, zmienne instancji i metody. Zmienne, które są dostępne dla wszystkich instancji klasy, nazywane są zmiennymi klasowymi. Funkcje zadeklarowane w klasie nazywane są metodami. Zmienne zdefiniowane w dowolnej metodzie klasy i dostępne w bieżącej instancji klasy nazywane są zmiennymi instancji. Klasa jest deklarowana w Pythonie, definiując słowo kluczowe klasy, a następnie nazwa klasy i dwukropek (:). Składnia klasy jest zdefiniowana poniżej.

Składnia klasy:

ClassName:
Zmienne;
Metody;

Instancja lub kopia klasy nazywa się obiekt Służy do uzyskania dostępu do zmiennych klas i metod klasowych. Klasa jest bezużyteczna bez deklarowania obiektu, ponieważ klasa zawiera opis tylko obiektu, który nie przeznacza żadnej pamięci. obiekt jest zadeklarowane, wspominając nazwę klasy z początkiem i zakończeniem pierwszych nawiasów. Jeśli klasa zawiera dowolną metodę konstruktora z parametrami, a następnie musisz zdefiniować wartość parametrów w czasie obiekt deklaracja. Składnia obiektu podano poniżej.

Składnia obiektu:

Object_name = class_name ()

Lub

Object_name = class_name (wartość1, wartość2,…)

Deklaracja prostej klasy i deklaracja obiektu tej klasy pokazano w następującym skrypcie. Klasa nazwana 'Książka„Został tutaj ogłoszony, który zawiera trzy zmienne klasy (nazwa_księgi, nazwa_ autora i cena) i metoda wymieniona book_discount_price (). Metoda obliczy cenę książki po 5% zniżce i wydrukuje szczegóły książki z oryginałem i ceną rabatową. Zmienna obiektu o nazwie OBJBOOK została zdefiniowana w skrypcie, aby utworzyć instancję klasy i wywołać metodę klasy.

ClassandObject.py

# Zdefiniuj klasę
Książka klasowa:
# Zdefiniuj i zainicjuj zmienne klasowe
book_name = "naucz się Pythona na twardą stronę"
Author_name = "Zed Shaw"
Cena = 22
# Zdefiniuj metodę klasy, aby wyświetlić szczegóły książki za pomocą ceny rabatowej
def book_discount_price (self):
# Oblicz cenę rabatową po 5% rabat
d_price = self.Cena - ja.Cena * 0.05
# Drukuj szczegóły książki
print ("nazwa książki: \ Nauthor Nazwa: \ noriginal cena: $ \ ndiscount cena: $ \ n"
.format (ja.Book_name, self.Autor_name, self.Cena, D_Price))
# Utwórz obiekt klasy
objbook = książka ()
Drukuj („Informacje o książce po zniżce:”)
# Wywołaj metodę klasy
objbook.book_discount_price ()

Wyjście:

Następujące dane wyjściowe pojawią się po wykonaniu powyższego skryptu.

Konstruktor:

Konstruktor jest metodą klasy zwanej automatycznie w czasie deklaracji obiektu tej klasy. Służy głównie do zainicjowania obiektu zmiennej. def Słowo kluczowe służy do deklarowania dowolnej metody w deklaracji klasy Python, a nazwa metody konstruktora to __w tym__() W Python. W Pythonie można zadeklarować dwa rodzaje konstruktorów. Są to konstruktor bez parametrów i sparametryzowany konstruktor. Zastosowania obu konstruktorów pokazano w tej części tego samouczka.

A. Konstruktor bez parametrów

Konstruktor, który zawiera tylko jeden wymieniony argument samego siebie nazywa się konstruktor bez parametrów lub domyślny. Nie jest wymagany parametr w momencie deklaracji obiektu klasy zawierającej konstruktor bez parametru. Sposób ogłoszenia konstruktora bez parametrów pokazano w następującym skrypcie. Tutaj Klient Klasa zawiera konstruktor bez parametru, który zainicjuje cztery zmienne klasy, gdy zostanie utworzony jakikolwiek obiekt klasy. Następnie obiekt nazywanej klasy Objcustomer został zadeklarowany w celu uzyskania dostępu do zmiennych klasy.

default_constructor.py

# Zdefiniuj klasę klientów
Klient klas:
# Deklaruj konstruktor bez parametru
def __init __ (ja):
# Zainicjuj zmienne klasowe
samego siebie.Id = „D-67455”
samego siebie.name = „Sakib Hasan”
samego siebie.ConcT_Type = „Zapisywanie”
samego siebie.Równowaga = 5000000
# Utwórz obiekt klasy klienta
objCustomer = Customer ()
Drukuj („Podstawowe informacje klienta: \ n”)
# Wydrukuj wartości właściwości obiektu
print ("id: \ nname: \ naccount Typ: \ nbalance: "
.Format (Objcustomer.ID, OBJCustomer.Imię, Objcustomer.ConcT_Type, objcustomer.balansować))

Wyjście:

Następujące dane wyjściowe pojawią się po wykonaniu powyższego skryptu.

B. Sparametryzowany konstruktor

Konstruktor, który zawiera jeden lub więcej argumentów z 'samego siebie„Argument jest nazywany sparametryzowanym konstruktorem. Musisz przekazać wartości parametrów w momencie tworzenia obiektu klasy. Sposób deklarowania sparametryzowanego konstruktora został pokazany w następującym skrypcie. Tutaj Klient klasa jest zadeklarowana sparametryzowanym konstruktorem i dwiema metodami. Metoda wymieniona Balance_after_deposit () jest zdefiniowane w celu dodania kwoty depozytowej z saldem. Metoda wymieniona Balance_after_withDraw () jest zdefiniowane w celu odliczenia kwoty wypłaty od salda. Następnie zdefiniowana jest zmienna obiektu, aby wyświetlić podstawowe szczegóły klienta, saldo po depozyt i saldo po wycofaniu się.

Paremetetized_constructor.py

# Zdefiniuj klasę klientów
Klient klas:
# Deklaruj konstruktor parametrem
def __init __ (self, cust_id, cust_name, cust_balance):
# Zainicjuj zmienne
samego siebie.Id = cust_id
samego siebie.name = CUST_NAME
samego siebie.Balance = Cust_Balance
# Dodaj kwotę z saldem
def Balance_After_Deposit (self, depozyt_amount):
samego siebie.saldo += depozyt_amount
# Wydrukuj bieżącą saldo
print („Depozyt ammount: \ ncurrent Balance: \ n”.format (depozyt_amount, self.balansować))
# Odejmij kwotę od salda
def Balance_After_WithDraw (self, wycofanie_amount):
samego siebie.bilans -= wycofanie_amount
# Wydrukuj bieżącą saldo
print („Wycofaj ammount: \ ncurrent Balance: \ n”.format (wycofanie się, jaźń.balansować))
# Utwórz obiekt klasy klienta
ObjCustomer = Klient („M-231234”, „Mir Sabbir”, 200000)
# Wydrukuj podstawowe informacje klienta
print ("Szczegóły klienta: \ nid: \ nname: \ nopening Balance: \ n"
.Format (Objcustomer.ID, OBJCustomer.Imię, Objcustomer.balansować))
# Dodaj kwotę depozytów
Objcustomer.Balance_after_deposit (30000)
# Odejmij kwotę wypłaty
Objcustomer.Balance_after_withDraw (10000)

Wyjście:

Następujące dane wyjściowe pojawią się po wykonaniu powyższego skryptu. Tutaj saldo otwarcia wynosi 200000. Saldo staje się 220000 po dodaniu 30000 i odejmowaniu 10000.

Dziedzictwo:

Jedną z podstawowych cech programowania obiektowego jest dziedzictwo. Sposób na utworzenie nowej klasy z istniejącej klasy nazywa się dziedzictwem. Istniejąca klasa nazywa się klasą nadrzędną lub klasą podstawową, a odziedziczona nowa klasa nazywa się klasą dziecięcą lub pochodną. Klasa dziecka będzie zawierać cechy klasy podstawowej po dziedzictwie. Jak można zastosować dziedziczenie w klasie Python, pokazano w poniższym przykładzie. W scenariuszu ''Student„jest klasą rodziców i”StudentDetails„Czy klasa dzieci. Obie klasy mają sparametryzowane konstruktory. Klasa nadrzędna ma nazwaną metodę Display Basic () Aby wydrukować identyfikator, nazwisko i zmienne e -mailowe, nazwa i e -mail. Klasa dziecka ma nazwaną metodę displayInfo () Aby wydrukować wartości seria i zmienne semestralne klasy dzieci. Konstruktor klasy nadrzędnej nazywa się konstruktorem klasy dzieci. Po deklaracji klasowej obiekt klasy nadrzędnej został zadeklarowany z trzema parametrowymi wartościami w celu zainicjowania zmiennych klasy klasy nadrzędnej, a metoda klasy nadrzędnej została wywołana w celu wyświetlenia tych wartości. Następnie obiekt klasy dziecka został zadeklarowany z trzema parametrowymi wartościami zainicjowania zmiennych klasowych klasy dziecka, a metoda klasy dziecięcej została wywołana w celu wyświetlania tych wartości.

dziedzictwo.py

# Zdefiniuj klasę nadrzędną
Uczeń klasy:
# Zdefiniuj konstruktor klasy nadrzędnej
def __init __ (self, id, nazwa, e -mail):
# Zainicjuj zmienne klasy nadrzędne
samego siebie.Id = id
samego siebie.Nazwa = nazwa
samego siebie.e -mail = e -mail
# Zdefiniuj metodę klasy nadrzędnej
def DisplayBasic (self):
# Wydrukuj wartości zmiennych klasy nadrzędnych
print ("id: \ nname: \ nEmail: ".format (ja.Id, ja.Imię, ja.e-mail))
# Zdefiniuj klasę dziecka
Klasa StudentDetails (uczeń):
# Zdefiniuj konstruktor klasy dzieci
def __init __ (self, id, nazwa, e -mail, dept, partia, sem, cgpa):
# Zadzwoń do konstruktora klasy nadrzędnej
Student.__init __ (self, id, nazwa, e -mail)
# Zainicjuj zmienne klasy dzieci
samego siebie.dział = Dept
samego siebie.Batch = partia
samego siebie.semestr = sem
samego siebie.CGPA = CGPA
# Zdefiniuj metodę klasy dzieci
def displayinfo (self):
Student.Displaybasic (self)
# Wydrukuj wartości zmiennych klasy dzieci
print ("dział: \ nbatch: \ nsemerter: "
.format (ja.dział, ja.partia, ja.semestr))
# Utwórz obiekt klasy nadrzędnej
ObjStudent = Student („674534”, „Rakib Hasan”, „[email protected] ')
Drukuj („Podstawowe informacje ucznia: \ n”)
# Wywołaj metodę klasy nadrzędnej
objstudent.DisplayBasic ()
# Utwórz obiekt klasy dziecięcej
ObjStudentDetails = StudentDetails („783412”, „Zannatul Ferdous”, „[email protected] ', „cse”, 48, 10, 3.89)
Drukuj („Informacje szczegóły nstudent: \ n”)
# Wywołaj metodę klasy dziecka
objstudentDetails.displayInfo ()
# Wydrukuj wartość właściwości klasy dziecięcej
print („cgpa: ”.Format (objstudentDetails.CGPA))

Wyjście:

Następujące dane wyjściowe pojawią się po wykonaniu powyższego skryptu.

Kapsułkowanie:

Inną podstawową cechą programowania obiektowego jest kapsułkowanie. Sposób ukrycia konkretnych zmiennych i metod klasy nazywa się enkapsulacja. Służy do ustawienia ograniczenia w celu uzyskania dostępu do konkretnych danych. Głównym celem tej funkcji jest zapewnienie bezpieczeństwa danych poprzez ukrywanie danych. Zakapulowanie można wdrożyć w Python poprzez deklarowanie prywatnych lub chronionych członków danych klasy. Jak można wdrożyć enkapsulacja w Pythonie, pokazano w poniższym przykładzie. W skrypcie Dodać klasa stworzona przez odziedziczenie Numer klasa. Prywatny członek nazwany '__wynik„Zadeklarował w klasie dzieci, aby przechowywać sumę dwóch liczb, a ta zmienna jest dostępna tylko w klasie dzieci. Konstruktor klasy nadrzędnej zainicjuje dwie zmienne klasy za pomocą liczb. Zgodnie ze skryptem konstruktor klasy dzieci wywoła konstruktor klasy nadrzędnej, obliczy sumę zmiennych klasowych i wydrukować wynik dodania. Po deklaracji klasowej przedmiot klasy dzieci został ogłoszony. Następnie prywatny członek klasy dziecięcej użył w funkcji drukowania, która wygeneruje błąd.

enkalsulation.py

# Zdefiniuj klasę nadrzędną
numer klasy:
def __init __ (ja):
# Zainicjuj członków publicznych klasy rodziców
samego siebie.N1 = 10
samego siebie.N2 = 30
# Zdefiniuj klasę dziecka
Dodaj klasę (numer):
def __init __ (ja):
# Zadzwoń do konstruktora nadrzędnego
Numer.__w sobie)
"
Przechowuj wynik dodatku w prywatnym członku
klasy dziecięcej
"
samego siebie.__Result = self.N1 + Self.n2
# Wydrukuj wynik dodania
wydrukuj („wynik dodatku = \ n”.format (ja.__wynik))
# Utwórz obiekt klasy dziecięcej
objadd = add ()
# Wydrukuj prywatną własność klasy dzieci
Drukuj (objadd.__wynik)

Wyjście:

Następujące dane wyjściowe pojawią się po wykonaniu powyższego skryptu. Po zdefiniowaniu obiektu wywołano metodę konstruktora i wydrukowano sumę 10 i 30. Pojawił się komunikat o błędzie, aby uzyskać dostęp do prywatnego członka z zewnątrz klasy.

Wielopostaciowość:

Inną podstawową cechą programowania obiektowego jest polimorfizm. Znaczenie poli to „wiele” i morfizm to „formy”. Sposób wielokrotnego deklarowania tej samej funkcji w różnych celach nazywa się polimorfizmem. Kodowanie staje się łatwiejsze do korzystania z tej funkcji OOP. Tę funkcję można zaimplementować przy użyciu skryptu Pythona, takiego jak polimorfizm w różnych klasach, polimorfizm w odziedziczonych klasach itp. Jak polimorfizm można zaimplementować w różnych klasach za pomocą skryptu Pythona, pokazano w poniższym przykładzie. W skrypcie zadeklarowano dwie niepowiązane klasy o nazwie Rectangle i Circle. Obie klasy mają sparametryzowany konstruktor i wymienioną metodę obszar(). Tutaj obie klasy zawierają tę samą metodę, ale cel tej metody jest inny. W klasie prostokątnej konstruktor zainicjuje dwie wymienione zmienne wysokość I szerokość, i obszar() Metoda obliczy obszar prostokąta. W klasie okręgu konstruktor zainicjuje jedną wymienioną zmienną promień, i obszar() Metoda obliczy obszar koła. Po ogłoszeniu klasy, od użytkownika zostaną pobrane dwie wartości liczbowe, aby przekazać wartości wysokości i szerokości do konstruktora Prostokąt klasa w momencie deklaracji obiektu. Następnie obszar() Metoda Prostokąt Klasa zostanie wezwana do wydrukowania obszaru prostokąta na podstawie wartości wejściowych. Następnie jedna wartość liczbowa zostanie pobrana od użytkownika, aby przekazać wartość promienia konstruktorowi Koło klasa w czasie tworzenia obiektu. , obszar() Metoda Koło Klasa zostanie wezwana do wydrukowania obszaru okręgu na podstawie wartości wejściowej.

wielopostaciowość.py

# Zdefiniuj klasę prostokąta
Prostokąt klasy:
# Zdefiniuj konstruktor
def __init __ (jaźń, wysokość, szerokość):
# Zainicjuj zmienne klasowe
samego siebie.Wysokość = wysokość
samego siebie.szerokość = szerokość
# Zdefiniuj metodę obliczenia obszaru prostokąta
Obszar def (ja):
obszar = ja.Wysokość * ja.szerokość
Drukuj („Obszar prostokąta to \ n”.format (obszar))
# Zdefiniuj klasę koła
Krąg klasowy:
# Zdefiniuj konstruktor
def __init __ (self, promień):
# Zainicjuj zmienną klasową
samego siebie.promień = promień
# Zdefiniuj metodę obliczania obszaru koła
Obszar def (ja):
obszar = 3.14 * ja.promień * ja.promień
Drukuj („Obszar koła to \ n”.format (obszar))
# Weź wartości wysokości i szerokości od użytkownika
height = int (input („Wprowadź wysokość prostokąta:”))
szerokość = int (wejście („Wprowadź szerokość prostokąta:”))
# Utwórz obiekt klasy prostokąta
objRectangle = prostokąt (wysokość, szerokość)
# Call Area () Metoda do wydrukowania obszaru prostokąta
OBJRECTAGLE.obszar()
# Weź wartość promienia od użytkownika
Radius = int (input („Wprowadź promień prostokąta:”))
# Utwórz obiekt klasy okręgu
objcircle = koło (promień)
# Call Area () Metoda do wydrukowania obszaru koła
OB00000000000000000000000000000000000000000000000000000000000000JCIRCLE.obszar()

Wyjście:

Następujące dane wyjściowe pojawią się po wykonaniu powyższego skryptu. Zgodnie z wyjściem 5 przyjął wartość wysokości, a 2 uznało wartość szerokości. W przypadku tych wartości obszar recTan0gle wynosi 10 (5 × 2), który został wydrukowany. Następnie 2 uznało się za wartość promienia, a obszar okręgu wynosi 12.56 (3.14x2x2), który został wydrukowany.

Getter and Setter:

Metoda zastosowana do odczytu wartości właściwości nazywa się Getter, a metoda stosowana do ustawienia wartości właściwości nazywa się setter. W programowaniu zorientowanym na obiekty getter służy do dostępu do prywatnych atrybutów klasy, a setter służy do ustawiania wartości prywatnych atrybutów klasy klasy. Głównymi celami tej funkcji jest zapewnienie kapsułkowania danych i sprawdzania poprawności danych. Getter i setter można zaimplementować za pomocą normalnej funkcji lub dekoratora @Property. W tej części samouczka pokazano oba sposoby wdrażania settera i gettera.

Setter i getter za pomocą normalnej funkcji:

Poniższy skrypt pokazuje, w jaki sposób można użyć normalnej funkcji do wszczepienia metod Gettera i Setter. W skrypcie Osoba Klasa zawiera niestandardowe metody gettera i setter do odczytu wartości zmiennych klasy prywatnej i ustawiania wartości zmiennej e -mail, która jest członkiem prywatnym. Pusta wartość przeszła dla zmiennej e -mail w momencie tworzenia obiektów, a metoda niestandardowa setter została użyta do ustawienia wartości wiadomości e -mail. Metoda niestandardowa getter zwróci wszystkie wartości zmiennej klasy jako listy.

custom_setter_getter.py

# Zdefiniuj klasę
Osoba klasowa:
def __init __ (ja, imię, e -mail, telefon):
# Zdefiniuj zmienne członkowskie prywatne
samego siebie.__name = nazwa
samego siebie.__EMAIL = e -mail
samego siebie.__ telefon = telefon
# Zdefiniuj niestandardowy getter
def get_person_data (self):
Drukuj („Metoda niestandardowa getter nazywa się”)
powrót [ja.__name, ja.__email, ja.__telefon]
# Zdefiniuj niestandardowy setter
def set_person_data (self, e -mail):
drukuj („Metoda niestandardowa setter jest nazywana”)
samego siebie.__EMAIL = e -mail
# Utwórz obiekt klasy
objperson = osoba („Rifat bin Hasan”, ”,„ 01855435626 ”)
# Ustaw wartość e -mail za pomocą niestandardowego setera
Objperson.set_person_data ('[email protected] ')
# Przeczytaj wszystkie wartości elementów danych za pomocą niestandardowego gettera
osoba = objperson.get_person_data ()
# Wydrukuj wartości zwrotne
print ("Nazwa: \ nEmail: \ nphone: ".format (osoba [0], osoba [1], osoba [2])))

Wyjście:

Następujące dane wyjściowe pojawią się po wykonaniu powyższego skryptu.

Setter i getter za pomocą dekoratora @Property:

Poniższy skrypt pokazuje, w jaki sposób dekorator @Property może być używany do wszczepienia metod gettera i settera. W skrypcie getter i setter zadeklarowały za pomocą dekoratora @Property, aby ustawić wartość zmiennej nazwy, członek klasy prywatny. Po ogłoszeniu klasy obiekt klasy został zdefiniowany, a wartość zmiennej nazwy została przypisana i odzyskana za pomocą settera i getter.

decorator_setter_getter.py

# Zdefiniuj klasę
Osoba klasowa:
def __init __ (self, name = ”):
# Zdefiniuj zmienne członkowskie prywatne
samego siebie.__name = nazwa
# Zdefiniuj niestandardowy getter
@nieruchomość
Nazwa def (ja):
Drukuj („Metoda Getter nazywa się”)
powrót do siebie.__nazwa
# Zdefiniuj niestandardowy setter
@nazwa.seter
Nazwa def (sama, nazwa):
druk („Metoda settera nazywa się”)
samego siebie.__name = nazwa
# Utwórz obiekt klasy
objperson = person ()
# Ustaw wartość e -mail za pomocą niestandardowego setera
Objperson.name = „Zanifer Ali”
drukuj („Nazwa osoby to \ n”.Format (objperson.nazwa))

Wyjście:

Następujące dane wyjściowe pojawią się po wykonaniu powyższego skryptu.

Operator i funkcja przeciążenia:

Gdy dowolna funkcja lub operator jest używany do innego celu w oparciu o parametr funkcji lub operandy zamiast normalnego użycia funkcji lub operatora, nazywane jest przeciążeniem. Funkcja ponownego użycia może być zaimplementowana w programowaniu zorientowanym na obiekty za pomocą przeciążenia operatora i przeciążenia funkcji. Jest to przydatna funkcja OOP, ale nadmierne użycie tej funkcji stwarza trudność w zarządzaniu kodem. Proste użycie przeciążenia operatora i przeciążenia funkcji w klasie Python zostało pokazane w tym samouczku.

Przeciążenie operatora:

Operator jest używany na dwóch operantach. Cel każdego operatora jest inny. Na przykład istnieje wiele zastosowań operatora „+”, na przykład do dodawania, łączenia dwóch ciągów itp. Ale gdy operator „+” jest używany do innego celu, nazywa się to przeciążeniem operatora. Specjalne funkcje są używane do różnych rodzajów przeciążenia operatora. Funkcja specjalna jest zadeklarowana za pomocą „__” na początku i zakończeniu nazwy funkcji. W Pythonie istnieje wiele specjalnych funkcji różnych rodzajów operatorów. Operator może być matematyczny, porównanie operator, operator przypisania, itp. W tej części tego samouczka pokazano użycie specjalnej funkcji operatora matematycznego, aby zrozumieć pojęcie przeciążenia operatora w Python.

Operator matematyczny:

Operatorzy używane do operacji arytmetycznych nazywane są operatorem matematycznym. Te operatorzy mogą być używane do specjalnego celu za pomocą specjalnej funkcji. Niektóre specjalne funkcje operatora matematycznego są wymienione poniżej.

Imię operatora Symbol Specjalna funkcja
Dodatek + __add __ (ja, inne)
Odejmowanie - __Sub __ (ja, inne)
Mnożenie * __mul __ (ja, inne)
Dział / __trediv __ (jaźń, inne)
Moduł % __mod __ (ja, inne)
Moc ** __pow __ (ja, inne)

Korzystanie z specjalnej funkcji operatora zasilania (**):

__pow __ () Specjalna funkcja służy do przeciążenia operatora zasilania. Głównym celem operatora energii jest obliczenie wartości mocy określonej liczby. Ale jeśli potrzebujemy obliczyć wartości mocy za pomocą wartości punktowych, ogólny operator zasilania nie zadziała. Załóżmy, że istnieją dwa punkty (3, 2) i (2, 4). Potrzebujemy sumy 32 i 24. W takim przypadku musimy użyć specjalnej funkcji operatora zasilania. Funkcja __pow __ () może obliczyć sumę mocy na podstawie wartości punktowych pokazanych w następującym skrypcie. Klasa SumofPower zawiera sparametryzowany konstruktor do zainicjowania dwóch zmiennych klasowych, __pow __ () funkcja obliczania suma dwóch mocy na podstawie wartości punktowych i __str __ () funkcja wydrukowania obiektu klasy. Następnie zadeklarowano dwa obiekty klasy. Operator zasilania użył dwóch zmiennych obiektów w wydruku () funkcja, aby wywołać __pow __ () funkcja ukończenia operacji.

operator_overloading.py

# Zdefiniuj klasę
SumofPowers klasy:
# Zdefiniuj konstruktor klasowy
def __init __ (self, n1, n2):
samego siebie.a = n1
samego siebie.B = n2
# Przeciążenie operatora zasilania
def __pow __ (ja, inne):
a = jaźń.** Inne.A
b = jaźń.silić się.B
samego siebie.wynik = a + b
Zwracaj sumofpowers (a, b)
# Funkcja ciągu do drukowania obiektu klasy
def __str __ (jaźń):
powrót str (jaźń.a)+'+'+str (jaźń.B)
# Utwórz pierwszy obiekt
Pow1 = sumofpowers (3, 2)
# Utwórz drugi obiekt
Pow2 = sumofpowers (2, 4)
# Oblicz moce i wydrukuj sumę mocy
drukuj („suma mocy =”, Pow1 ** Pow2, „=”, Pow1.wynik)

Wyjście:

Następujące dane wyjściowe pojawią się po wykonaniu powyższego skryptu. 32 to 9, a 24 to 16. Suma 9 i 16 wynosi 25, która jest wyświetlana na wyjściu.

Przeciążenie funkcji:

Czasami musimy napisać wiele metod, które są dość podobne, ale różnią się tylko w niektórych częściach. W takim przypadku można zdefiniować jedną metodę, aby wykonać te same zadania za pomocą przeciążenia funkcji. Złożoność kodu można usunąć, a kod staje się wyraźniejszy za pomocą przeciążenia funkcji. Wyjście funkcji zależy od argumentu przekazanego do funkcji. Jak przeciążenie funkcji można zaimplementować w Python, pokazano w następującym skrypcie. Głównym celem skryptu jest wykonanie czterech rodzajów operacji arytmetycznych o wartości domyślnej lub wartościach przekazanych w momencie tworzenia obiektów. Metoda wymieniona Oblicz () został tu użyty do wykonywania operacji arytmetycznych. Metoda została nazwana czterokrotnie w skrypcie, aby wykonać cztery rodzaje zadań. Gdy metoda wywoła bez żadnego argumentu, wyświetli tylko wiadomość. Gdy metoda wywoła „+” jako wartość argumentu, obliczy wartości domyślne. Gdy metoda wywoła „-” i wartości liczbowej jako wartości argumentu, odejmie drugą wartość domyślną od wartości argumentu. Gdy metoda wywołuje „*” i dwie wartości liczbowe jako wartości argumentu, obliczy dwie wartości argumentów.

funkcja_overloading.py

# Zdefiniuj klasę
Arytmetyka klasy:
# Zdefiniuj zmienną klasową
wynik = 0
# Zdefiniuj metodę klasy
def Oblicz (self, operator = "", numer1 = 25, liczba2 = 35):
# Oblicz podsumowanie
Jeśli operator == "+":
samego siebie.wynik = numer1 + numer2
Drukuj („Wynik dodania to ”.format (ja.wynik))
# Oblicz odejmowanie
Elif Operator == "-":
samego siebie.wynik = numer1 - Number2
Drukuj („Wynik odejmowania to ”.format (ja.wynik))
# Oblicz mnożenie
Elif Operator == "*":
samego siebie.wynik = numer1 * Number2
Drukuj („Wynik mnożenia to ”.format (ja.wynik))
# Oblicz podział
Elif Operator == "/":
samego siebie.wynik = numer1 / numer2
Drukuj („Wynik podziału to ”.format (ja.wynik))
w przeciwnym razie:
druk („nie podano operatora”)
# Utwórz obiekt klasy
objarytmetyka = arytmetyka ()
# Wywołaj metodę bez argumentu
objarytmetyka.Oblicz()
# Wywołaj metodę jednym argumentem
objarytmetyka.Oblicz („+”)
# Wywołaj metodę dwoma argumentami
objarytmetyka.Oblicz („-”, 50)
# Wywołaj metodę z trzema argumentami
objarytmetyka.Oblicz („*”, 2, 3)

Wyjście:

Następujące dane wyjściowe pojawią się po wykonaniu powyższego skryptu. 'Żadnego operatora nie jest podawane„Wiadomość wydrukowała do wywołania metody bez żadnych argumentów. Suma 25 i 35 została wydrukowana do wywołania metody jednym argumentem. Wartość odejmowania 50-35 została wydrukowana do wywołania metody z dwiema wartościami argumentów. Wartość mnożenia 3 i 2 wydrukowała do wywołania metody z trzema wartościami argumentów. W ten sposób przeciążenie funkcji zostało zaimplementowane w skrypcie, aby używać tej samej funkcji wiele razy.

Wniosek:

Podstawowe programowanie obiektowe w Pythonie zostało wyjaśnione w tym samouczku za pomocą bardzo prostych przykładów Pythona. Omówiono tutaj najczęstsze cechy OOP, aby pomóc czytelnikom poznać sposób OOP w Python i możliwość pisania programu Python za pomocą klasy i obiektu.