python oops concepts python classes
Koncepty OOP v Pythonu: Třídy a objekty Pythonu, dědičnost, přetížení, přepsání a skrytí dat
V předchozím tutoriálu jsme některé z Vstupní / výstupní operace které poskytuje Python.
Zjistili jsme, jak používat tyto funkce ke čtení dat od uživatele nebo z externích zdrojů a také jak tato data zapisovat do externích zdrojů. Také jsme se naučili, jak rozdělit obrovský kód na menší metody pomocí funkcí a jak je volat nebo přistupovat k nim.
Další čtení => Výslovný rozsah bezplatných výukových programů pro Python
V tomto kurzu probereme koncept Advanced Python s názvem OOP a různé typy konceptů oops, které jsou k dispozici v Pythonu a jak a kde je použít.
Co se naučíte:
- Podívejte se na VIDEO výukové programy
- Třídy a objekty
- Konstruktor v Pythonu
- Dědictví
- Přetížení metody v Pythonu
- Přepsání metody v Pythonu
- Skrytí dat v Pythonu
- Závěr
- Doporučené čtení
Podívejte se na VIDEO výukové programy
Video # 1: Class, Objects & Constructor in Python
Video # 2: Koncept dědičnosti v Pythonu
Video # 3: Přetížení, přepsání a skrytí dat v Pythonu
kde je klíč zabezpečení sítě na routeru
Třídy a objekty
- Python je objektově orientovaný programovací jazyk, kde programování více zdůrazňuje objekty.
- Téměř všechno v Pythonu jsou objekty.
Třídy
Třída v Pythonu je sbírka objektů, o třídě si můžeme myslet jako o plánu nebo náčrtu nebo prototypu. Obsahuje všechny podrobnosti o objektu.
V příkladu z reálného světa je Zvíře třída, protože na světě máme různé druhy zvířat a všechna tato patří do třídy zvané Zvíře.
Definování třídy
V Pythonu bychom měli definovat třídu pomocí klíčového slova „třída“.
Syntax:
class classname: #Collection of statements or functions or classes
Příklad:
class MyClass: a = 10 b = 20 def add(): sum = a+b print(sum)
Ve výše uvedeném příkladu jsme deklarovali třídu nazvanou „Myclass“ a deklarovali a definovali jsme některé proměnné a funkce.
Pro přístup k těm funkcím nebo proměnným přítomným uvnitř třídy můžeme použít název třídy vytvořením jejího objektu.
Nejprve se podívejme, jak získat přístup k těm, kteří používají název třídy.
Příklad:
class MyClass: a = 10 b = 20 #Accessing variable present inside MyClass print(MyClass.a)
Výstup
10
Výstup:
Objekty
Objekt je obvykle instancí třídy. Používá se pro přístup ke všemu přítomnému uvnitř třídy.
Vytvoření objektu
Syntax:
variablename = classname
Příklad:
ob = MyClass()
Tím se vytvoří nový objekt instance s názvem „ob“. Pomocí tohoto názvu objektu můžeme přistupovat ke všem atributům přítomným uvnitř třídy MyClass.
Příklad:
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()
Výstup:
10
dvacet
30
Výstup:
Konstruktor v Pythonu
Constructor in Python is a special method which is used to initialize the members of a class during run-time when an object is created.
V Pythonu máme několik speciálních vestavěných metod tříd, které začínají dvojitým podtržítkem (__) a mají v Pythonu zvláštní význam.
Název konstruktoru bude vždy __init __ ().
Každá třída musí mít konstruktor, i když konstruktor výslovně nevytvoříte, vytvoří si výchozí konstruktor sám.
Příklad:
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()
Výstup:
Součet a a b je: 27
Výstup:
Pokud pozorujeme ve výše uvedeném příkladu, nevoláme metodu __init __ (), protože bude volána automaticky, když vytvoříme objekt do této třídy a inicializujeme datové členy, pokud existují.
Vždy si pamatujte, že konstruktor nikdy nevrátí žádné hodnoty, proto neobsahuje žádné návratové příkazy.
Dědictví
Dědičnost je jedním z nejmocnějších konceptů OOP.
Třída, která dědí vlastnosti jiné třídy, se nazývá Dědičnost.
Třída, která dědí vlastnosti, se nazývá podřízená třída / podtřída a třída, ze které se dědí vlastnosti, se nazývá nadřazená třída / základní třída.
Python poskytuje tři typy dědičnosti:
- Single dědičnost
- Víceúrovňová dědičnost
- Vícenásobné dědictví
Doporučené čtení = >> Dědičnost v Javě
# 1) Jednoduché dědictví
V Single dědičnosti jedna třída zdědí vlastnosti pouze jedné třídy.
Příklad:
jak otevírat soubory .jar
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()
Výstup:
Součet a a b je: 30
Odečtení c a d je: 40
Výstup:
Ve výše uvedeném příkladu zdědíme vlastnosti třídy „Operations“ do třídy „MyClass“.
Proto můžeme přistupovat ke všem metodám nebo příkazům přítomným ve třídě „Operations“ pomocí objektů MyClass.
# 2) Víceúrovňová dědičnost
Ve víceúrovňové dědičnosti funguje jedna nebo více tříd jako základní třída.
Což znamená, že druhá třída zdědí vlastnosti první třídy a třetí třída zdědí vlastnosti druhé třídy. Druhá třída bude tedy fungovat jako třída rodičů i dětí.
Příklad:
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()
Výstup:
Součet a a b je: 30
Odečtení a a b je: 10
Násobení a a b je: 200
Výstup:
Ve výše uvedeném příkladu zdědí třída „Odčítání“ vlastnosti třídy „Sčítání“ a třída „Násobení“ zdědí vlastnosti třídy „Odčítání“. Takže třída „Odčítání“ bude fungovat jako základní třída i odvozená třída.
# 3) Vícenásobné dědictví
Třída, která dědí vlastnosti více tříd, se nazývá Multiple Inheritance.
Další čtení = >> Podporuje Java vícenásobnou dědičnost?
Příklad:
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()
Výstup:
Součet a a b je: 30
Odečtení c a d je: 10
Násobení aac je: 500
Výstup:
Přetížení metody v Pythonu
Více metod se stejným názvem, ale s jiným typem parametru nebo jiným počtem parametrů se nazývá přetížení metody
Příklad:
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)
Výstup:
30
Výstup:
Výstup:
Přetížení metody není v Pythonu podporováno, protože pokud vidíme ve výše uvedeném příkladu, definovali jsme dvě funkce se stejným názvem „product“, ale s odlišným počtem parametrů.
V Pythonu se ale aktualizuje nejnovější definovaný, a proto bude funkční produkt (a, b) zbytečný.
Přepsání metody v Pythonu
Pokud má metoda podtřídy stejný název, který je deklarován v metodě nadtřídy, nazývá se přepsání metody
Abychom dosáhli přepsání metody, musíme použít dědičnost.
Příklad:
class A: def sayHi(): print(“I am in A”) class B(A): def sayHi(): print(“I am in B”) ob = B() ob.sayHi()
Výstup:
Jsem v B
Výstup:
Skrytí dat v Pythonu
Skrytí dat znamená, že data budou soukromá, aby nebyla přístupná ostatním členům třídy. Je přístupný pouze ve třídě, kde je deklarován.
Pokud chceme v pythonu skrýt proměnnou, musíme před název proměnné napsat dvojité podtržítko (__).
Příklad:
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
Výstup:
30
Traceback (poslední hovor poslední):
Soubor „DataHiding.py“, řádek 10, v
tisk (ať už splatný .__)
AttributeError: instance MyClass má
žádný atribut „__num
Výstup:
Závěr
Třída je plán nebo šablona, která obsahuje všechny podrobnosti o objektu, přičemž objekt je instancí třídy.
- Pokud chceme do třídy dostat vlastnosti jiné třídy, lze toho dosáhnout dědičností.
- Dědičnost je 3 typů - jednoduchá dědičnost, víceúrovňová dědičnost a vícenásobná dědičnost.
- Přetížení metody není v Pythonu podporováno.
- Přepsání metody se používá k přepsání implementace stejné funkce, která je definována v jiné třídě.
- Můžeme dát atributy dat jako soukromé nebo je skrýt, aby nebyly přístupné mimo třídu, kde jsou definovány.
Náš nadcházející výukový program podrobně vysvětlí další koncepty Pythonu !!
Výukový program PREV | DALŠÍ výuka