logo

Python OOPs konsepter

Objektorientert programmering er et grunnleggende konsept i Python, som gir utviklere mulighet til å bygge modulære, vedlikeholdbare og skalerbare applikasjoner. Ved å forstå kjerneprinsippene for OOP – klasser, objekter, arv, innkapsling, polymorfisme og abstraksjon – kan programmerere utnytte det fulle potensialet til Pythons OOP-evner til å designe elegante og effektive løsninger på komplekse problemer.

Hva er objektorientert programmering i Python?

I Python er objektorientert programmering (OOPs) et programmeringsparadigme som bruker objekter og klasser i programmering. Det tar sikte på å implementere virkelige enheter som arv, polymorfismer, innkapsling, etc. i programmeringen. Hovedkonseptet med objektorientert programmering (OOPs) eller oops-konsepter i Python er å binde dataene og funksjonene som fungerer sammen som en enkelt enhet slik at ingen andre deler av koden kan få tilgang til disse dataene.



OOPs-konsepter i Python

  • Klasse i Python
  • Objekter i Python
  • Polymorfisme i Python
  • Innkapsling i Python
  • Arv i Python
  • Dataabstraksjon i Python
Python OOPs

Python OOPs konsepter

Python klasse

En klasse er en samling av objekter. En klasse inneholder tegningene eller prototypen som objektene lages fra. Det er en logisk enhet som inneholder noen attributter og metoder.

For å forstå behovet for å lage en klasse, la oss ta et eksempel, la oss si at du ønsket å spore antall hunder som kan ha forskjellige egenskaper som rase og alder. Hvis en liste brukes, kan det første elementet være hundens rase, mens det andre elementet kan representere dens alder. La oss anta at det er 100 forskjellige hunder, hvordan vil du da vite hvilket element som skal være hvilket? Hva om du ville legge til andre egenskaper til disse hundene? Dette mangler organisering og det er det nøyaktige behovet for klasser.



Noen punkter på Python-klassen:

  • Klasser opprettes etter nøkkelordklasse.
  • Attributter er variablene som tilhører en klasse.
  • Attributter er alltid offentlige og kan nås ved å bruke prikk (.)-operatoren. F.eks.: Myclass.Myattribute

Klassedefinisjonssyntaks:

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

Opprette en tom klasse i Python

I eksemplet ovenfor har vi laget en klasse som heter Dog ved å bruke klassenøkkelordet.



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

Python-objekter

I objektorientert programmering Python er objektet en enhet som har en tilstand og atferd knyttet til seg. Det kan være et hvilket som helst objekt fra den virkelige verden som mus, tastatur, stol, bord, penn osv. Heltall, strenger, flytende tall, til og med matriser og ordbøker, er alle objekter. Mer spesifikt er ethvert enkelt heltall eller en enkelt streng et objekt. Tallet 12 er et objekt, strengen Hallo, verden er et objekt, en liste er et objekt som kan inneholde andre objekter, og så videre. Du har brukt objekter hele tiden og kanskje ikke engang innsett det.

Et objekt består av:

  • Stat: Det er representert av attributtene til et objekt. Det gjenspeiler også egenskapene til et objekt.
  • Oppførsel: Det er representert ved metodene til et objekt. Det reflekterer også responsen til et objekt på andre objekter.
  • Identitet: Det gir et unikt navn til et objekt og lar ett objekt samhandle med andre objekter.

For å forstå tilstanden, oppførselen og identiteten, la oss ta eksemplet med klassehunden (forklart ovenfor).

  • Identiteten kan betraktes som navnet på hunden.
  • Tilstand eller attributter kan betraktes som hundens rase, alder eller farge.
  • Atferden kan vurderes om hunden spiser eller sover.

Opprette et objekt

Dette vil lage et objekt kalt obj av klassen Dog definert ovenfor. Før du dykker dypt inn i objekter og klasser, la oss forstå noen grunnleggende nøkkelord som vil bli brukt mens du arbeider med objekter og klasser.

Python3
obj = Dog()>

Python-selvet

  1. Klassemetoder må ha en ekstra første parameter i metodedefinisjonen. Vi gir ikke en verdi for denne parameteren når vi kaller metoden, Python gir den
  2. Hvis vi har en metode som ikke tar noen argumenter, så må vi fortsatt ha ett argument.
  3. Dette ligner på denne pekeren i C++ og denne referansen i Java.

Når vi kaller en metode for dette objektet som myobject.method(arg1, arg2), konverteres denne automatisk av Python til MyClass.method(myobject, arg1, arg2) – dette er alt det spesielle jeget handler om.

Merk: For mer informasjon, se selv i Python-klassen

Python __init__-metoden

De __init__ metode ligner på konstruktører i C++ og Java. Den kjøres så snart et objekt i en klasse er instansiert. Metoden er nyttig for å gjøre enhver initialisering du vil gjøre med objektet ditt. La oss nå definere en klasse og lage noen objekter ved å bruke selv og __init__ metoden.

Opprette en klasse og et objekt med klasse- og forekomstattributter

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

Produksjon
Rodger is a mammal Tommy is also a mammal My name is Rodger My name is Tommy>

Lage klasser og objekter med metoder

Her er The Dog-klassen definert med to attributter:

java matematikk tilfeldig
  • attr1 er et klasseattributt satt til verdien pattedyr . Klasseattributter deles av alle forekomster av klassen.
  • __init__ er en spesiell metode (konstruktør) som initialiserer en forekomst av Dog-klassen. Det krever to parametere: selv (refererer til forekomsten som opprettes) og navn (representerer navnet på hunden). Navneparameteren brukes til å tilordne et navneattributt til hver forekomst av Dog.
    Speak-metoden er definert i hundeklassen. Denne metoden skriver ut en streng som inkluderer navnet på hundeforekomsten.

Førerkoden starter med å lage to forekomster av hundeklassen: Rodger og Tommy. __init__-metoden kalles for hver forekomst for å initialisere navneattributtene deres med de angitte navnene. Speak-metoden kalles i begge tilfeller (Rodger.speak() og Tommy.speak()), noe som får hver hund til å skrive ut en uttalelse med navnet sitt.

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

Produksjon
My name is Rodger My name is Tommy>

Merk: For mer informasjon, se Python-klasser og -objekter

Python arv

I Python objektorientert programmering er arv evnen til en klasse til å utlede eller arve egenskapene fra en annen klasse. Klassen som utleder egenskaper kalles den avledede klassen eller barneklassen, og klassen som egenskapene blir avledet fra kalles basisklassen eller overordnet klasse. Fordelene med arv er:

  • Det representerer relasjoner i den virkelige verden godt.
  • Det gir gjenbrukbarhet av en kode. Vi trenger ikke å skrive den samme koden igjen og igjen. Dessuten lar det oss legge til flere funksjoner til en klasse uten å endre den.
  • Den er transitiv i naturen, noe som betyr at hvis klasse B arver fra en annen klasse A, vil alle underklassene til B automatisk arve fra klasse A.

Typer av arv

  • Enkeltarv : Enkeltnivåarv gjør at en avledet klasse kan arve egenskaper fra en enkeltforelderklasse.
  • Flernivåarv: Multi-level arv gjør at en avledet klasse kan arve egenskaper fra en umiddelbar overordnet klasse som igjen arver egenskaper fra sin overordnede klasse.
  • Hierarkisk arv: Arv på hierarkisk nivå gjør at mer enn én avledet klasse kan arve egenskaper fra en overordnet klasse.
  • Multippel arv: Arv på flere nivåer gjør at én avledet klasse kan arve egenskaper fra mer enn én basisklasse.

Arv i Python

I artikkelen ovenfor har vi opprettet to klasser, dvs. person (foreldreklasse) og ansatt (barneklasse). Ansatte-klassen arver fra Person-klassen. Vi kan bruke metodene til personklassen gjennom medarbeiderklassen som vist i visningsfunksjonen i koden ovenfor. En barneklasse kan også endre oppførselen til den overordnede klassen sett gjennom details()-metoden.

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

Produksjon
Rahul 886012 My name is Rahul IdNumber: 886012 Post: Intern>

Merk: For mer informasjon, se vår Arv i Python opplæringen.

Python polymorfisme

I objektorientert programmeringspython betyr polymorfisme ganske enkelt å ha mange former. For eksempel må vi finne ut om den gitte fuglearten flyr eller ikke, ved å bruke polymorfisme kan vi gjøre dette ved å bruke en enkelt funksjon.

Polymorfisme i Python

Denne koden demonstrerer konseptet med Python oops-arv og metodeoverstyring i Python-klasser. Den viser hvordan underklasser kan overstyre metoder definert i deres overordnede klasse for å gi spesifikk atferd mens de fortsatt arver andre metoder fra den overordnede klassen.

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

Produksjon
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.>

Merk: For mer informasjon, se vår Polymorfisme i Python Opplæringen.

Python-innkapsling

I Python objektorientert programmering er Encapsulation et av de grunnleggende konseptene innen objektorientert programmering (OOP). Den beskriver ideen om å pakke inn data og metodene som fungerer på data innenfor en enhet. Dette setter begrensninger på direkte tilgang til variabler og metoder og kan forhindre utilsiktet endring av data. For å forhindre utilsiktet endring, kan et objekts variabel bare endres ved hjelp av et objekts metode. Disse typer variabler er kjent som private variabler.

En klasse er et eksempel på innkapsling da den innkapsler alle dataene som er medlemsfunksjoner, variabler osv.

Innkapsling i Python

I eksemplet ovenfor har vi laget c-variabelen som privat attributt. Vi kan ikke engang få tilgang til dette attributtet direkte og kan ikke engang endre verdien.

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>

Produksjon
techcodeview.com>

Merk: for mer informasjon, se vår Innkapsling i Python Opplæringen.

array vs arraylist

Dataabstraksjon

Den skjuler unødvendige kodedetaljer for brukeren. Også når vi ikke ønsker å gi ut sensitive deler av kodeimplementeringen vår og det er her dataabstraksjonen kom.

Dataabstraksjon i Python kan oppnås ved å lage abstrakte klasser.

Objektorientert programmering i Python | Sett 2 (skjul data og objektutskrift)