logo

Python OOPs sąvokos

Objektinis programavimas yra pagrindinė Python koncepcija, suteikianti kūrėjams galimybę kurti modulines, prižiūrimas ir keičiamo dydžio programas. Suprasdami pagrindinius OOP principus – klases, objektus, paveldėjimą, inkapsuliavimą, polimorfizmą ir abstrakciją – programuotojai gali panaudoti visą Python OOP galimybių potencialą kurdami elegantiškus ir efektyvius sudėtingų problemų sprendimus.

Kas yra objektinis programavimas Python?

Python į objektą orientuotas programavimas (OOP) yra programavimo paradigma, kuri programuojant naudoja objektus ir klases. Juo siekiama programuojant įgyvendinti realaus pasaulio objektus, tokius kaip paveldėjimas, polimorfizmai, inkapsuliavimas ir kt. Pagrindinė Python objektinio programavimo (OOP) arba oops koncepcijų koncepcija yra susieti duomenis ir funkcijas, kurios veikia kartu kaip vienas vienetas, kad jokia kita kodo dalis negalėtų pasiekti šių duomenų.



OOPs sąvokos Python

  • Klasė Python
  • Objektai Python
  • Polimorfizmas Python
  • Inkapsuliavimas Python
  • Paveldėjimas Python
  • Duomenų abstrakcija Python
Python OOPs

Python OOPs sąvokos

Python klasė

Klasė yra objektų rinkinys. Klasėje yra brėžiniai arba prototipas, iš kurių kuriami objektai. Tai loginis subjektas, kuriame yra tam tikrų atributų ir metodų.

Norėdami suprasti, kad reikia sukurti klasę, apsvarstykite pavyzdį, tarkime, kad norėjote stebėti šunų, kurie gali turėti skirtingus požymius, pvz., veislę ir amžių, skaičių. Jei naudojamas sąrašas, pirmasis elementas gali būti šuns veislė, o antrasis – jo amžių. Tarkime, kad yra 100 skirtingų šunų, tai kaip žinoti, kuris elementas turi būti kuris? Ką daryti, jei norėtumėte šiems šunims suteikti kitų savybių? Tam trūksta organizavimo ir tai yra tikslus užsiėmimų poreikis.



Kai kurie punktai apie Python klasę:

java math.random
  • Klasės kuriamos pagal raktinį žodį klasė.
  • Atributai yra kintamieji, priklausantys klasei.
  • Atributai visada yra vieši ir juos galima pasiekti naudojant taško (.) operatorių. Pvz.: Mano klasė. Mano atributas

Klasės apibrėžimo sintaksė:

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

Tuščios klasės sukūrimas naudojant Python

Aukščiau pateiktame pavyzdyje mes sukūrėme klasę, pavadintą Šuo, naudodami klasės raktinį žodį.



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

Python objektai

Objektiniame programavime Python objektas yra subjektas, turintis su juo susijusią būseną ir elgesį. Tai gali būti bet koks realus objektas, pvz., pelė, klaviatūra, kėdė, stalas, rašiklis ir tt Sveikieji skaičiai, eilutės, slankiojo kablelio skaičiai, net masyvai ir žodynai yra visi objektai. Tiksliau tariant, bet koks sveikasis skaičius arba bet kuri eilutė yra objektas. Skaičius 12 yra objektas, eilutė Sveiki, pasaulis yra objektas, sąrašas yra objektas, kuriame gali būti kiti objektai ir pan. Jūs visą laiką naudojote objektus ir galbūt to net nesuvokėte.

Objektą sudaro:

  • Būsena: Jį reprezentuoja objekto atributai. Tai taip pat atspindi objekto savybes.
  • Elgesys: Jis vaizduojamas objekto metodais. Tai taip pat atspindi objekto reakciją į kitus objektus.
  • Tapatybė: Jis suteikia unikalų pavadinimą objektui ir leidžia vienam objektui sąveikauti su kitais objektais.

Norėdami suprasti būseną, elgesį ir tapatybę, paimkime klasės šuns pavyzdį (paaiškinta aukščiau).

  • Tapatybė gali būti laikoma šuns vardu.
  • Būsena arba Požymiai gali būti laikomi šuns veisle, amžiumi ar spalva.
  • Elgesys gali būti vertinamas pagal tai, ar šuo valgo, ar miega.

Objekto kūrimas

Taip bus sukurtas objektas, pavadintas obj, priklausantis aukščiau apibrėžtai šunų klasei. Prieš gilindamiesi į objektus ir klases, supraskime keletą pagrindinių raktinių žodžių, kurie bus naudojami dirbant su objektais ir klasėmis.

Python3
obj = Dog()>

Python savastis

  1. Klasės metodai metodo apibrėžime turi turėti papildomą pirmąjį parametrą. Mes nepateikiame šio parametro reikšmės, kai iškviečiame metodą, Python jį pateikia
  2. Jei turime metodą, kuriam nereikia argumentų, vis tiek turime turėti vieną argumentą.
  3. Tai panašu į šį žymeklį C++ ir šią nuorodą Java.

Kai šio objekto metodą vadiname myobject.method(arg1, arg2), Python jį automatiškai konvertuoja į MyClass.method(myobject, arg1, arg2) – visa tai yra ypatingas aš.

Pastaba: Norėdami gauti daugiau informacijos, žr savarankiškai Python klasėje

Python __init__ metodas

The __init__ metodas yra panašus į C++ ir Java konstruktorius. Jis paleidžiamas, kai tik sukuriamas klasės objektas. Šis metodas yra naudingas norint atlikti bet kokią inicijaciją, kurią norite atlikti su objektu. Dabar apibrėžkime klasę ir sukurkime kai kuriuos objektus naudodami self ir __init__ metodą.

Klasės ir objekto kūrimas su klasės ir egzemplioriaus atributais

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))>

Išvestis
Rodger is a mammal Tommy is also a mammal My name is Rodger My name is Tommy>

Klasių ir objektų kūrimas metodais

Čia šunų klasė apibrėžiama dviem atributais:

  • attr1 yra klasės atributas, nustatytas pagal vertę žinduolis . Klasės atributus bendrina visi klasės egzemplioriai.
  • __init__ yra specialus metodas (konstruktorius), kuris inicijuoja Dog klasės egzempliorių. Tam reikia dviejų parametrų: savęs (nurodantis kuriamą egzempliorių) ir vardą (atstovaujantį šuns vardą). Vardo parametras naudojamas pavadinimo atributui priskirti kiekvienam šuns egzemplioriui.
    Kalbėjimo metodas yra apibrėžtas šunų klasėje. Šis metodas spausdina eilutę, kurioje yra šuns egzemplioriaus pavadinimas.

Vairuotojo kodas prasideda sukuriant du šunų klasės egzempliorius: Rodgerį ir Tommy. Metodas __init__ iškviečiamas kiekvienam atvejui, kad inicijuotų savo vardo atributus pateiktais pavadinimais. Kalbėjimo metodas iškviečiamas abiem atvejais (Rodger.speak() ir Tommy.speak()), todėl kiekvienas šuo atspausdina teiginį su savo vardu.

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()>

Išvestis
My name is Rodger My name is Tommy>

Pastaba: Norėdami gauti daugiau informacijos, žr Python klasės ir objektai

Python paveldėjimas

Python objektiniame programavime paveldėjimas yra vienos klasės galimybė išvesti arba paveldėti ypatybes iš kitos klasės. Klasė, kuri išveda savybes, vadinama išvestine klase arba antrine klase, o klasė, iš kurios gaunamos savybės, vadinama bazine arba pirmine klase. Paveldėjimo pranašumai yra šie:

  • Tai gerai atspindi realaus pasaulio santykius.
  • Tai suteikia galimybę pakartotinai naudoti kodą. Mums nereikia rašyti to paties kodo vėl ir vėl. Be to, tai leidžia mums pridėti daugiau funkcijų prie klasės jos nekeičiant.
  • Jis yra tranzityvus, o tai reiškia, kad jei B klasė paveldėtų iš kitos A klasės, tada visi B poklasiai automatiškai paveldėtų iš A klasės.

Paveldėjimo rūšys

  • Vienkartinis paveldėjimas : Vieno lygio paveldėjimas leidžia išvestinei klasei paveldėti charakteristikas iš vienos pirminės klasės.
  • Daugiapakopis paveldėjimas: Kelių lygių paveldėjimas leidžia išvestinei klasei paveldėti ypatybes iš tiesioginės pirminės klasės, kuri savo ruožtu paveldi ypatybes iš pirminės klasės.
  • Hierarchinis paveldėjimas: Hierarchinio lygio paveldėjimas leidžia daugiau nei vienai išvestinei klasei paveldėti ypatybes iš pirminės klasės.
  • Daugkartinis paveldėjimas: Kelių lygių paveldėjimas leidžia vienai išvestinei klasei paveldėti savybes iš daugiau nei vienos bazinės klasės.

Paveldėjimas Python

Aukščiau esančiame straipsnyje sukūrėme dvi klases, ty Asmuo (tėvų klasė) ir Darbuotojas (Vaikų klasė). Darbuotojų klasė paveldi iš Asmenų klasės. Asmenų klasės metodus galime naudoti per darbuotojų klasę, kaip matyti aukščiau pateiktame kode esančioje rodymo funkcijoje. Antrinė klasė taip pat gali modifikuoti pagrindinės klasės elgesį, kaip matyti naudojant detalių() metodą.

kaip konvertuoti int į java eilutę
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()>

Išvestis
Rahul 886012 My name is Rahul IdNumber: 886012 Post: Intern>

Pastaba: Daugiau informacijos rasite mūsų Paveldėjimas Python pamoka.

Python polimorfizmas

Objektiniame programavimo Python, polimorfizmas tiesiog reiškia turėti daug formų. Pavyzdžiui, turime nustatyti, ar tam tikros rūšies paukščiai skraido, ar ne, naudojant polimorfizmą, tai galime padaryti naudodami vieną funkciją.

Polimorfizmas Python

Šis kodas parodo Python oops paveldėjimo koncepciją ir metodo nepaisymą Python klasėse. Tai parodo, kaip poklasiai gali nepaisyti metodų, apibrėžtų savo pagrindinėje klasėje, kad užtikrintų konkretų elgesį, o kitus metodus paveldėtų iš pagrindinės klasės.

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()>

Išvestis
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.>

Pastaba: Daugiau informacijos rasite mūsų Polimorfizmas Python Pamoka.

Python inkapsuliacija

Python objektiniame programavime inkapsuliavimas yra viena iš pagrindinių objektinio programavimo (OOP) sąvokų. Jame aprašoma duomenų apvyniojimo idėja ir metodai, kurie veikia su duomenimis viename vienete. Tai apriboja tiesioginę prieigą prie kintamųjų ir metodų ir gali užkirsti kelią atsitiktiniam duomenų pakeitimui. Siekiant išvengti atsitiktinio pasikeitimo, objekto kintamąjį galima pakeisti tik objekto metodu. Tokie kintamųjų tipai yra žinomi kaip privatūs kintamieji.

Klasė yra inkapsuliavimo pavyzdys, nes ji apima visus duomenis, kurie yra narių funkcijos, kintamieji ir kt.

konvertuoti eilutę į char

Inkapsuliavimas Python

Aukščiau pateiktame pavyzdyje mes sukūrėme c kintamąjį kaip privatų atributą. Net negalime tiesiogiai pasiekti šio atributo ir net negalime pakeisti jo vertės.

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>

Išvestis
techcodeview.com>

Pastaba: Norėdami gauti daugiau informacijos, skaitykite mūsų Inkapsuliavimas Python Pamoka.

Duomenų abstrakcija

Jis slepia nuo vartotojo nereikalingą kodo informaciją. Be to, kai nenorime atskleisti jautrių kodo diegimo dalių ir čia atsirado duomenų abstrakcija.

Duomenų abstrakcija Python gali būti pasiekta kuriant abstrakčias klases.

Objektinis programavimas Python | 2 rinkinys (duomenų slėpimas ir objektų spausdinimas)