logo

Koncepty Python OOPs

Objektovo orientované programovanie je základný koncept v Pythone, ktorý umožňuje vývojárom vytvárať modulárne, udržiavateľné a škálovateľné aplikácie. Pochopením základných princípov OOP – tried, objektov, dedenia, zapuzdrenia, polymorfizmu a abstrakcie – môžu programátori využiť plný potenciál OOP možností Pythonu na navrhovanie elegantných a efektívnych riešení zložitých problémov.

Čo je objektovo orientované programovanie v Pythone?

V Pythone je objektovo orientované programovanie (OOP) programovacia paradigma, ktorá v programovaní používa objekty a triedy. Jeho cieľom je implementovať do programovania entity reálneho sveta, ako je dedičnosť, polymorfizmy, zapuzdrenie atď. Hlavným konceptom objektovo orientovaného programovania (OOP) alebo konceptov oops v Pythone je spojiť dáta a funkcie, ktoré spolupracujú ako jeden celok, takže žiadna iná časť kódu nemôže pristupovať k týmto dátam.



OOPs koncepty v Pythone

  • Trieda v Pythone
  • Objekty v Pythone
  • Polymorfizmus v Pythone
  • Zapuzdrenie v Pythone
  • Dedičnosť v Pythone
  • Abstrakcia údajov v Pythone
Python OOP

Koncepty Python OOPs

Trieda Python

Trieda je zbierka objektov. Trieda obsahuje plány alebo prototyp, z ktorého sa objekty vytvárajú. Je to logická entita, ktorá obsahuje nejaké atribúty a metódy.

Aby sme pochopili potrebu vytvorenia triedy, zvážme príklad, povedzme, že ste chceli sledovať počet psov, ktorí môžu mať rôzne atribúty, ako je plemeno a vek. Ak sa použije zoznam, prvým prvkom môže byť plemeno psa, kým druhým prvkom môže byť jeho vek. Predpokladajme, že existuje 100 rôznych psov, ako by ste potom vedeli, ktorý prvok by mal byť ktorý? Čo keby ste chceli týmto psom pridať ďalšie vlastnosti? Chýba tomu organizácia a je to presná potreba tried.



java reťazec porovnať

Niektoré body triedy Python:

  • Triedy sa vytvárajú pomocou kľúčových slov class.
  • Atribúty sú premenné, ktoré patria do triedy.
  • Atribúty sú vždy verejné a možno k nim pristupovať pomocou operátora bodka (.). Napr.: Myclass.Myattribute

Syntax definície triedy:

class ClassName: # Statement-1 . . . # Statement-N>

Vytvorenie prázdnej triedy v Pythone

Vo vyššie uvedenom príklade sme vytvorili triedu s názvom Pes pomocou kľúčového slova class.



Python
# Python3 program to # demonstrate defining # a class class Dog: pass>

Objekty Pythonu

V objektovo orientovanom programovaní Python je objekt entita, ktorá má priradený stav a správanie. Môže to byť akýkoľvek objekt reálneho sveta, ako je myš, klávesnica, stolička, stôl, pero atď. Celé čísla, reťazce, čísla s pohyblivou rádovou čiarkou, dokonca polia a slovníky, to všetko sú objekty. Konkrétnejšie, každé jedno celé číslo alebo akýkoľvek jeden reťazec je objekt. Číslo 12 je objekt, reťazec Hello, world je objekt, zoznam je objekt, ktorý môže obsahovať iné objekty atď. Po celý čas ste používali predmety a možno si to ani neuvedomujete.

Objekt pozostáva z:

  • Štát: Je reprezentovaný atribútmi objektu. Odráža tiež vlastnosti objektu.
  • Správanie: Je reprezentovaný metódami objektu. Odráža tiež reakciu objektu na iné objekty.
  • identita: Objektom dáva jedinečný názov a umožňuje interakciu jedného objektu s inými objektmi.

Aby sme pochopili stav, správanie a identitu, vezmime si príklad triedneho psa (vysvetlené vyššie).

  • Identita môže byť považovaná za meno psa.
  • Stav alebo atribúty možno považovať za plemeno, vek alebo farbu psa.
  • Správanie možno zvážiť podľa toho, či pes je alebo spí.

Vytvorenie objektu

Tým sa vytvorí objekt s názvom obj triedy Dog definovanej vyššie. Predtým, ako sa ponoríme hlboko do objektov a tried, pochopme niektoré základné kľúčové slová, ktoré sa budú používať pri práci s objektmi a triedami.

Kat timpf
Python3
obj = Dog()>

Ja sám Python

  1. Metódy triedy musia mať v definícii metódy ďalší prvý parameter. Pri volaní metódy nedávame tomuto parametru hodnotu, poskytuje ju Python
  2. Ak máme metódu, ktorá neberie žiadne argumenty, potom stále musíme mať jeden argument.
  3. Je to podobné ako tento ukazovateľ v C++ a tento odkaz v Jave.

Keď zavoláme metódu tohto objektu ako myobject.method(arg1, arg2), Python ju automaticky prevedie na MyClass.method(myobject, arg1, arg2) – o tom je špeciálne ja.

Poznámka: Ďalšie informácie nájdete v časti seba v triede Python

Metóda Python __init__

The metóda __init__ je podobný konštruktorom v C++ a Jave. Spustí sa hneď, ako sa vytvorí inštancia objektu triedy. Metóda je užitočná na vykonanie akejkoľvek inicializácie, ktorú chcete vykonať s vaším objektom. Teraz definujme triedu a vytvorte nejaké objekty pomocou metódy self a __init__.

Vytvorenie triedy a objektu s atribútmi triedy a inštancie

Python3
class Dog: # class attribute attr1 = 'mammal' # Instance attribute def __init__(self, name): self.name = name # Driver code # Object instantiation Rodger = Dog('Rodger') Tommy = Dog('Tommy') # Accessing class attributes print('Rodger is a {}'.format(Rodger.__class__.attr1)) print('Tommy is also a {}'.format(Tommy.__class__.attr1)) # Accessing instance attributes print('My name is {}'.format(Rodger.name)) print('My name is {}'.format(Tommy.name))>

Výkon
Rodger is a mammal Tommy is also a mammal My name is Rodger My name is Tommy>

Vytváranie tried a objektov pomocou metód

Tu je trieda Pes definovaná s dvoma atribútmi:

  • attr1 je atribút triedy nastavený na hodnotu cicavec . Atribúty triedy sú zdieľané všetkými inštanciami triedy.
  • __init__ je špeciálna metóda (konštruktor), ktorá inicializuje inštanciu triedy Dog. Má dva parametre: self (odkazuje na inštanciu, ktorá sa vytvára) a meno (predstavuje meno psa). Parameter name sa používa na priradenie atribútu name ku každej inštancii Dog.
    Metóda speak je definovaná v rámci triedy Dog. Táto metóda vytlačí reťazec, ktorý obsahuje názov inštancie psa.

Kód vodiča začína vytvorením dvoch inštancií triedy Dog: Rodger a Tommy. Metóda __init__ sa volá pre každú inštanciu na inicializáciu ich atribútov názvov s poskytnutými názvami. Metóda speak sa volá v oboch prípadoch (Rodger.speak() a Tommy.speak()), čo spôsobí, že každý pes vytlačí vyhlásenie so svojím menom.

Python3
class Dog: # class attribute attr1 = 'mammal' # Instance attribute def __init__(self, name): self.name = name def speak(self): print('My name is {}'.format(self.name)) # Driver code # Object instantiation Rodger = Dog('Rodger') Tommy = Dog('Tommy') # Accessing class methods Rodger.speak() Tommy.speak()>

Výkon
My name is Rodger My name is Tommy>

Poznámka: Ďalšie informácie nájdete v časti Triedy a objekty Pythonu

veľkosti latexového textu

Dedičnosť Pythonu

V objektovo orientovanom programovaní Pythonu je dedičnosť schopnosť jednej triedy odvodiť alebo zdediť vlastnosti z inej triedy. Trieda, ktorá odvodzuje vlastnosti, sa nazýva odvodená trieda alebo dcérska trieda a trieda, z ktorej sú vlastnosti odvodené, sa nazýva základná trieda alebo rodičovská trieda. Výhody dedičstva sú:

  • Dobre reprezentuje vzťahy v reálnom svete.
  • Poskytuje opätovnú použiteľnosť kódu. Nemusíme písať ten istý kód znova a znova. Tiež nám umožňuje pridať do triedy ďalšie funkcie bez toho, aby sme ju upravovali.
  • Má tranzitívny charakter, čo znamená, že ak trieda B dedí z inej triedy A, potom všetky podtriedy B automaticky zdedia z triedy A.

Typy dedičstva

  • Jediné dedičstvo : Jednoúrovňová dedičnosť umožňuje odvodenej triede zdediť charakteristiky od jednej nadradenej triedy.
  • Viacúrovňová dedičnosť: Viacúrovňová dedičnosť umožňuje odvodenej triede dediť vlastnosti od bezprostrednej nadradenej triedy, ktorá zase zdedí vlastnosti od svojej nadradenej triedy.
  • Hierarchická dedičnosť: Dedičnosť na hierarchickej úrovni umožňuje viac ako jednej odvodenej triede dediť vlastnosti od nadradenej triedy.
  • Viacnásobné dedičstvo: Viacúrovňová dedičnosť umožňuje jednej odvodenej triede dediť vlastnosti z viac ako jednej základnej triedy.

Dedičnosť v Pythone

Vo vyššie uvedenom článku sme vytvorili dve triedy, t. j. Osoba (rodičovská trieda) a Zamestnanec (trieda Child). Trieda Zamestnanec dedí z triedy Osoba. Môžeme použiť metódy triedy osoby prostredníctvom triedy zamestnancov, ako je to vidieť vo funkcii zobrazenia vo vyššie uvedenom kóde. Podradená trieda môže tiež upraviť správanie rodičovskej triedy, ako je vidieť prostredníctvom metódy details().

Python3
# Python code to demonstrate how parent constructors # are called. # parent class class Person(object): # __init__ is known as the constructor def __init__(self, name, idnumber): self.name = name self.idnumber = idnumber def display(self): print(self.name) print(self.idnumber) def details(self): print('My name is {}'.format(self.name)) print('IdNumber: {}'.format(self.idnumber)) # child class class Employee(Person): def __init__(self, name, idnumber, salary, post): self.salary = salary self.post = post # invoking the __init__ of the parent class Person.__init__(self, name, idnumber) def details(self): print('My name is {}'.format(self.name)) print('IdNumber: {}'.format(self.idnumber)) print('Post: {}'.format(self.post)) # creation of an object variable or an instance a = Employee('Rahul', 886012, 200000, 'Intern') # calling a function of the class Person using # its instance a.display() a.details()>

Výkon
Rahul 886012 My name is Rahul IdNumber: 886012 Post: Intern>

Poznámka: Viac informácií nájdete v našom Dedičnosť v Pythone tutoriál.

Polymorfizmus Pythonu

V objektovo orientovanom programovacom Pythone polymorfizmus jednoducho znamená mať mnoho foriem. Potrebujeme napríklad určiť, či daný druh vtákov lieta alebo nie, pomocou polymorfizmu to dokážeme pomocou jedinej funkcie.

Polymorfizmus v Pythone

Tento kód demonštruje koncept dedičnosti Python oops a prepisovania metód v triedach Pythonu. Ukazuje, ako môžu podtriedy prepísať metódy definované vo svojej nadradenej triede, aby poskytovali špecifické správanie, pričom stále dedia iné metódy z nadradenej triedy.

Python3
class Bird: def intro(self): print('There are many types of birds.') def flight(self): print('Most of the birds can fly but some cannot.') class sparrow(Bird): def flight(self): print('Sparrows can fly.') class ostrich(Bird): def flight(self): print('Ostriches cannot fly.') obj_bird = Bird() obj_spr = sparrow() obj_ost = ostrich() obj_bird.intro() obj_bird.flight() obj_spr.intro() obj_spr.flight() obj_ost.intro() obj_ost.flight()>

Výkon
There are many types of birds. Most of the birds can fly but some cannot. There are many types of birds. Sparrows can fly. There are many types of birds. Ostriches cannot fly.>

Poznámka: Viac informácií nájdete v našom Polymorfizmus v Pythone Návod.

pre slučku java

Zapuzdrenie Pythonu

V objektovo orientovanom programovaní Pythonu je zapuzdrenie jedným zo základných konceptov objektovo orientovaného programovania (OOP). Popisuje myšlienku zabaľovania údajov a metódy, ktoré pracujú s údajmi v rámci jednej jednotky. To kladie obmedzenia na priamy prístup k premenným a metódam a môže zabrániť náhodnej modifikácii údajov. Aby sa predišlo náhodnej zmene, premennú objektu možno zmeniť iba metódou objektu. Tieto typy premenných sú známe ako súkromné ​​premenné.

Trieda je príkladom zapuzdrenia, pretože zahŕňa všetky údaje, ktorými sú členské funkcie, premenné atď.

nastaviť v jave

Zapuzdrenie v Pythone

Vo vyššie uvedenom príklade sme vytvorili premennú c ako atribút private. K tomuto atribútu nemáme ani priamy prístup a nemôžeme ani zmeniť jeho hodnotu.

Python3
# Python program to # demonstrate private members # '__' double underscore represents private attribute.  # Private attributes start with '__'. # Creating a Base class class Base: def __init__(self): self.a = 'techcodeview.com' self.__c = 'techcodeview.com' # Creating a derived class class Derived(Base): def __init__(self): # Calling constructor of # Base class Base.__init__(self) print('Calling private member of base class: ') print(self.__c) # Driver code obj1 = Base() print(obj1.a) # Uncommenting print(obj1.c) will # raise an AttributeError # Uncommenting obj2 = Derived() will # also raise an AtrributeError as # private member of base class # is called inside derived class>

Výkon
techcodeview.com>

Poznámka: viac informácií nájdete na našej stránke Zapuzdrenie v Pythone Návod.

Abstrakcia údajov

Skryje nepotrebné podrobnosti kódu pred používateľom. Tiež, keď nechceme rozdávať citlivé časti implementácie nášho kódu a práve tu prišla abstrakcia dát.

Abstrakciu údajov v Pythone je možné dosiahnuť vytvorením abstraktných tried.

Objektovo orientované programovanie v Pythone | Sada 2 (skrytie údajov a tlač objektov)