python oops concepts python classes
Pojęcia OOP w Pythonie: klasy i obiekty Pythona, dziedziczenie, przeciążanie, zastępowanie i ukrywanie danych
W poprzednim samouczku omówiliśmy niektóre z plików Operacje wejścia / wyjścia który zapewnia Python.
Dowiedzieliśmy się, jak wykorzystać te funkcje do odczytu danych od użytkownika lub ze źródeł zewnętrznych, a także jak zapisać te dane w źródłach zewnętrznych. Dowiedzieliśmy się również, jak podzielić ogromny kod na mniejsze metody za pomocą funkcji i jak je wywoływać lub uzyskiwać do nich dostęp.
Dalsza lektura => Wyraźny zakres bezpłatnych samouczków szkoleniowych Pythona
W tym samouczku omówimy koncepcję zaawansowanego języka Python zwaną OOP i różne typy koncepcji Ups, które są dostępne w Pythonie oraz jak i gdzie ich używać.
Czego się nauczysz:
- Obejrzyj samouczki WIDEO
- Klasy i obiekty
- Konstruktor w Pythonie
- Dziedzictwo
- Przeciążanie metod w Pythonie
- Nadpisywanie metody w Pythonie
- Ukrywanie danych w Pythonie
- Wniosek
- rekomendowane lektury
Obejrzyj samouczki WIDEO
Wideo nr 1: Klasa, obiekty i konstruktor w Pythonie
Wideo nr 2: Koncepcja dziedziczenia w Pythonie
Wideo nr 3: Przeciążanie, zastępowanie i ukrywanie danych w Pythonie
Klasy i obiekty
- Python to zorientowany obiektowo język programowania, w którym programowanie kładzie większy nacisk na obiekty.
- Prawie wszystko w Pythonie to obiekty.
Zajęcia
Klasa w Pythonie to zbiór obiektów, możemy myśleć o klasie jako o planie, szkicu lub prototypie. Zawiera wszystkie szczegóły obiektu.
W przykładzie ze świata rzeczywistego Animal jest klasą, ponieważ mamy na świecie różne rodzaje zwierząt i wszystkie należą do klasy zwanej Animal.
Definiowanie klasy
W Pythonie powinniśmy zdefiniować klasę za pomocą słowa kluczowego „class”.
Składnia:
class classname: #Collection of statements or functions or classes
Przykład:
class MyClass: a = 10 b = 20 def add(): sum = a+b print(sum)
W powyższym przykładzie zadeklarowaliśmy klasę o nazwie „Myclass” oraz zadeklarowaliśmy i zdefiniowaliśmy odpowiednio niektóre zmienne i funkcje.
Aby uzyskać dostęp do tych funkcji lub zmiennych obecnych w klasie, możemy użyć nazwy klasy, tworząc jej obiekt.
Najpierw zobaczmy, jak uzyskać dostęp do osób korzystających z nazwy zajęć.
Przykład:
class MyClass: a = 10 b = 20 #Accessing variable present inside MyClass print(MyClass.a)
Wynik
10
Wynik:
Obiekty
Obiekt jest zwykle instancją klasy. Służy do dostępu do wszystkiego, co jest obecne w klasie.
Tworzenie obiektu
Składnia:
variablename = classname
Przykład:
ob = MyClass()
Spowoduje to utworzenie nowego obiektu instancji o nazwie „ob”. Używając tej nazwy obiektu, możemy uzyskać dostęp do wszystkich atrybutów obecnych w klasie MyClass.
Przykład:
class MyClass: a = 10 b = 20 def add(self): sum = self.a + self.b print(sum) #Creating an object of class MyClass ob = MyClass() #Accessing function and variables present inside MyClass using the object print(ob.a) print(ob.b) ob.add()
Wynik:
10
dwadzieścia
30
Wynik:
Konstruktor w Pythonie
Konstruktor w Pythonie to specjalna metoda, która jest używana do inicjowania elementów klasy w czasie wykonywania, gdy tworzony jest obiekt.
W Pythonie mamy specjalne wbudowane metody klas, które zaczynają się od podwójnego podkreślenia (__) i mają specjalne znaczenie w Pythonie.
Nazwą konstruktora będzie zawsze __init __ ().
Każda klasa musi mieć konstruktora, nawet jeśli nie utworzysz konstruktora w sposób jawny, sam utworzy domyślny konstruktor.
Przykład:
class MyClass: sum = 0 def __init__ (self, a, b): self.sum = a+b def printSum(self): print(“Sum of a and b is: ”, self.sum) #Creating an object of class MyClass ob = MyClass(12, 15) ob.printSum()
Wynik:
Suma a i b wynosi: 27
Wynik:
Jeśli obserwujemy w powyższym przykładzie, nie wywołujemy metody __init __ (), ponieważ zostanie ona wywołana automatycznie, gdy utworzymy obiekt tej klasy i zainicjujemy elementy składowe danych, jeśli takie istnieją.
Zawsze pamiętaj, że konstruktor nigdy nie zwróci żadnych wartości, dlatego nie zawiera żadnych instrukcji return.
Dziedzictwo
Dziedziczenie jest jedną z najpotężniejszych koncepcji OOP.
Klasa dziedzicząca właściwości innej klasy jest nazywana dziedziczeniem.
Klasa dziedzicząca właściwości jest nazywana klasą / podklasą potomną, a klasa, z której dziedziczone są właściwości, jest nazywana klasą nadrzędną / klasą bazową.
Python udostępnia trzy typy dziedziczenia:
- Dziedziczenie pojedyncze
- Dziedziczenie wielopoziomowe
- Dziedziczenie wielokrotne
Zalecana lektura = >> Dziedziczenie w Javie
1) Pojedyncze dziedziczenie
W przypadku dziedziczenia pojedynczego jedna klasa będzie dziedziczyć właściwości tylko jednej klasy.
Przykład:
class Operations: a = 10 b = 20 def add(self): sum = self.a + self.b print(“Sum of a and b is: “, sum) class MyClass(Operations): c = 50 d = 10 def sub(self): sub = self.c – self.d print(“Subtraction of c and d is: ”, sub) ob = MyClass() ob.add() ob.sub()
Wynik:
C ++ struktura danych drzewa
Suma a i b wynosi: 30
Odejmowanie c i d wynosi: 40
Wynik:
W powyższym przykładzie dziedziczymy właściwości klasy „Operations” do klasy „MyClass”.
Dlatego możemy uzyskać dostęp do wszystkich metod lub instrukcji obecnych w klasie „Operations” za pomocą obiektów MyClass.
# 2) Dziedziczenie wielopoziomowe
W przypadku dziedziczenia wielopoziomowego jedna lub więcej klas działa jako klasa bazowa.
Oznacza to, że druga klasa odziedziczy właściwości pierwszej klasy, a trzecia klasa odziedziczy właściwości drugiej klasy. Zatem druga klasa będzie działać zarówno jako klasa nadrzędna, jak i klasa podrzędna.
Przykład:
class Addition: a = 10 b = 20 def add(self): sum = self.a + self.b print(“Sum of a and b is: ”, sum) class Subtraction(Addition): def sub(self): sub = self.b-self.a print(“Subtraction of a and b is: ”, sub) class Multiplication(Subtraction): def mul(self): multi = self.a * self.b print(“Multiplication of a and b is: ”, multi) ob = Multiplication () ob.add() ob.sub() ob.mul()
Wynik:
Suma a i b wynosi: 30
Odejmowanie a i b wynosi: 10
Mnożenie a i b wynosi: 200
Wynik:
W powyższym przykładzie klasa „Odejmowanie” dziedziczy właściwości klasy „Dodawanie”, a klasa „Mnożenie” odziedziczy właściwości klasy „Odejmowanie”. Zatem klasa „Odejmowanie” będzie działać zarówno jako klasa podstawowa, jak i klasa pochodna.
# 3) Dziedziczenie wielokrotne
Klasa dziedzicząca właściwości wielu klas jest nazywana dziedziczeniem wielokrotnym.
Dalsza lektura = >> Czy Java obsługuje wielokrotne dziedziczenie?
Przykład:
class Addition: a = 10 b = 20 def add(self): sum = self. a+ self.b print(“Sum of a and b is: “, sum) class Subtraction(): c = 50 d = 10 def sub(self): sub = self.c-self.d print(“Subtraction of c and d is: ”, sub) class Multiplication(Addition,Subtraction): def mul(self): multi = self.a * self.c print(“Multiplication of a and c is: ”, multi) ob = Multiplication () ob.add() ob.sub() ob.mul()
Wynik:
Suma a i b wynosi: 30
Odejmowanie c i d wynosi: 10
Mnożenie a i c wynosi: 500
Wynik:
Przeciążanie metod w Pythonie
Wiele metod o tej samej nazwie, ale z innym typem parametru lub inną liczbą parametrów nazywa się Przeciążeniem metod
Przykład:
def product(a, b): p = a*b print(p) def product(a, b, c): p = a*b*c print(p) #Gives you an error saying one more argument is missing as it updated to the second function #product(2, 3) product(2, 3, 5)
Wynik:
30
Wynik:
Wynik:
Przeciążanie metod nie jest obsługiwane w Pythonie, ponieważ jeśli widzimy w powyższym przykładzie, zdefiniowaliśmy dwie funkcje o tej samej nazwie „produkt”, ale z różną liczbą parametrów.
Ale w Pythonie najnowsza zdefiniowana zostanie zaktualizowana, więc produkt funkcji (a, b) stanie się bezużyteczny.
Nadpisywanie metody w Pythonie
Jeśli metoda podklasy ma taką samą nazwę, jaka jest zadeklarowana w metodzie nadklasy, wówczas jest nazywana nadpisywaniem metody
Aby uzyskać przesłanianie metody, musimy użyć dziedziczenia.
Przykład:
class A: def sayHi(): print(“I am in A”) class B(A): def sayHi(): print(“I am in B”) ob = B() ob.sayHi()
Wynik:
Jestem w B.
Wynik:
Ukrywanie danych w Pythonie
Ukrywanie danych oznacza uczynienie danych prywatnymi, tak aby nie były dostępne dla innych członków klasy. Dostęp do niego można uzyskać tylko w klasie, w której jest zadeklarowany.
W Pythonie, jeśli chcemy ukryć zmienną, to przed nazwą zmiennej musimy wpisać podwójne podkreślenie (__).
Przykład:
Class MyClass: __num = 10 def add(self, a): sum = self.__num + a print(sum) ob = MyClass() ob.add(20) print(ob.__num) #The above statement gives an error because we are trying to access private variable outside the class
Wynik:
30
Traceback (ostatnie ostatnie połączenie):
Plik „DataHiding.py”, wiersz 10, w
drukuj (czy należne .__)
AttributeError: wystąpienie MyClass ma
brak atrybutu „__num
Wynik:
Wniosek
Klasa jest planem lub szablonem zawierającym wszystkie szczegóły obiektu, w przypadku gdy obiekt jest instancją klasy.
- Jeśli chcemy przenieść właściwości innej klasy do klasy, można to osiągnąć przez dziedziczenie.
- Dziedziczenie ma 3 typy - dziedziczenie pojedyncze, dziedziczenie wielopoziomowe i dziedziczenie wielokrotne.
- Przeciążanie metod nie jest obsługiwane w języku Python.
- Przesłanianie metod służy do przesłonięcia implementacji tej samej funkcji, która jest zdefiniowana w innej klasie.
- Możemy ustawić atrybuty danych jako prywatne lub ukryć je, aby nie były dostępne poza klasą, w której zostały zdefiniowane.
W naszym nadchodzącym samouczku szczegółowo wyjaśnimy dodatkowe koncepcje Pythona !!
POPRZEDNIA samouczek | NEXT Tutorial
rekomendowane lektury
- Zmienne Pythona
- Python DateTime Tutorial z przykładami
- Funkcje łańcuchowe w Pythonie
- Samouczek Pythona dla początkujących (praktyczne BEZPŁATNE szkolenie Python)
- Instrukcje sterujące w języku Python (Python Continue, Break and Pass)
- Operatory Pythona
- Funkcje Pythona
- Wprowadzenie do języka Python i proces instalacji