Objektorienteret programmering er et grundlæggende koncept i Python, som giver udviklere mulighed for at bygge modulære, vedligeholdelige og skalerbare applikationer. Ved at forstå de centrale OOP-principper – klasser, objekter, arv, indkapsling, polymorfi og abstraktion – kan programmører udnytte det fulde potentiale af Pythons OOP-kapaciteter til at designe elegante og effektive løsninger på komplekse problemer.
Hvad er objektorienteret programmering i Python?
I Python er objektorienteret programmering (OOPs) et programmeringsparadigme, der bruger objekter og klasser i programmering. Det sigter mod at implementere virkelige enheder som arv, polymorfier, indkapsling osv. i programmeringen. Hovedkonceptet for objektorienteret programmering (OOPs) eller oops-koncepter i Python er at binde dataene og funktionerne, der arbejder sammen som en enkelt enhed, så ingen anden del af koden kan få adgang til disse data.
OOPs koncepter i Python
- Klasse i Python
- Objekter i Python
- Polymorfi i Python
- Indkapsling i Python
- Arv i Python
- Dataabstraktion i Python

Python OOPs koncepter
Python klasse
En klasse er en samling af objekter. En klasse indeholder tegningerne eller prototypen, som objekterne bliver skabt ud fra. Det er en logisk enhed, der indeholder nogle attributter og metoder.
For at forstå behovet for at oprette en klasse, lad os overveje et eksempel, lad os sige, at du ønskede at spore antallet af hunde, der kan have forskellige egenskaber som race og alder. Hvis en liste bruges, kan det første element være hundens race, mens det andet element kan repræsentere dens alder. Lad os antage, at der er 100 forskellige hunde, hvordan ville du så vide, hvilket element der formodes at være hvilket? Hvad hvis du ville tilføje andre egenskaber til disse hunde? Dette mangler organisation, og det er det nøjagtige behov for klasser.
Nogle punkter om Python-klassen:
- Klasser oprettes efter nøgleordsklasse.
- Attributter er de variable, der hører til en klasse.
- Attributter er altid offentlige og kan tilgås ved hjælp af prik-operatoren (.). F.eks.: Min klasse. Min attribut
Klassedefinitionssyntaks:
sprøjte træer
class ClassName: # Statement-1 . . . # Statement-N>
Oprettelse af en tom klasse i Python
I ovenstående eksempel har vi oprettet en klasse ved navn Hund ved at bruge klassens nøgleord.
java streng sammenkædningPython
# Python3 program to # demonstrate defining # a class class Dog: pass>
Python objekter
I objektorienteret programmering Python er objektet en enhed, der har en tilstand og adfærd forbundet med sig. Det kan være et hvilket som helst objekt fra den virkelige verden som en mus, et tastatur, en stol, et bord, en pen osv. Heltal, strenge, flydende kommatal, endda arrays og ordbøger, er alle objekter. Mere specifikt er ethvert enkelt heltal eller en hvilken som helst enkelt streng et objekt. Tallet 12 er et objekt, strengen Hej, verden er et objekt, en liste er et objekt, der kan indeholde andre objekter, og så videre. Du har brugt objekter hele tiden og er måske ikke engang klar over det.
Et objekt består af:
- Stat: Det er repræsenteret af et objekts attributter. Det afspejler også et objekts egenskaber.
- Opførsel: Det er repræsenteret af et objekts metoder. Det afspejler også et objekts reaktion på andre objekter.
- Identitet: Det giver et unikt navn til et objekt og gør det muligt for et objekt at interagere med andre objekter.
For at forstå tilstanden, adfærden og identiteten, lad os tage eksemplet med klassehunden (forklaret ovenfor).
- Identiteten kan betragtes som navnet på hunden.
- Tilstand eller egenskaber kan betragtes som hundens race, alder eller farve.
- Adfærden kan overvejes om hunden spiser eller sover.
Oprettelse af et objekt
Dette vil skabe et objekt ved navn obj af klassen Dog defineret ovenfor. Før vi dykker dybt ned i objekter og klasser, lad os forstå nogle grundlæggende nøgleord, der vil blive brugt, mens vi arbejder med objekter og klasser.
Python3 obj = Dog()>
Python-selvet
- Klassemetoder skal have en ekstra første parameter i metodedefinitionen. Vi giver ikke en værdi for denne parameter, når vi kalder metoden, Python giver den
- Hvis vi har en metode, der ikke tager nogen argumenter, så skal vi stadig have ét argument.
- Dette ligner denne pointer i C++ og denne reference i Java.
Når vi kalder en metode for dette objekt som myobject.method(arg1, arg2), konverteres denne automatisk af Python til MyClass.method(myobject, arg1, arg2) – det er alt, hvad det specielle selv handler om.
Bemærk: For mere information, se selv i Python-klassen
Python __init__ metoden
Det __init__ metode ligner konstruktører i C++ og Java. Det køres, så snart et objekt i en klasse er instantieret. Metoden er nyttig til at udføre enhver initialisering, du ønsker at gøre med dit objekt. Lad os nu definere en klasse og skabe nogle objekter ved hjælp af selv og __init__ metoden.
Oprettelse af en klasse og et objekt med klasse- og instansattributter
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))> Produktion
Rodger is a mammal Tommy is also a mammal My name is Rodger My name is Tommy>
Oprettelse af klasser og objekter med metoder
Her er The Dog-klassen defineret med to attributter:
streng sammenlignet
- attr1 er en klasseattribut sat til værdien pattedyr . Klasseattributter deles af alle forekomster af klassen.
- __init__ er en speciel metode (konstruktør), der initialiserer en instans af klassen Dog. Det kræver to parametre: selv (der henviser til den instans, der oprettes) og navn (repræsenterer navnet på hunden). Navneparameteren bruges til at tildele en navneattribut til hver forekomst af hund.
Speak-metoden er defineret inden for hundeklassen. Denne metode udskriver en streng, der inkluderer navnet på hundeforekomsten.
Førerkoden starter med at oprette to forekomster af hundeklassen: Rodger og Tommy. Metoden __init__ kaldes for hver instans for at initialisere deres navneattributter med de angivne navne. Speak-metoden kaldes i begge tilfælde (Rodger.speak() og Tommy.speak()), hvilket får hver hund til at udskrive en erklæring med sit navn.
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()> Produktion
My name is Rodger My name is Tommy>
Bemærk: For mere information, se Python-klasser og -objekter
Python arv
I Python objektorienteret programmering er arv en klasses evne til at udlede eller arve egenskaberne fra en anden klasse. Klassen, der udleder egenskaber, kaldes den afledte klasse eller underordnede klasse, og klassen, som egenskaberne udledes fra, kaldes basisklassen eller overordnet klasse. Fordelene ved arv er:
- Det repræsenterer forhold i den virkelige verden godt.
- Det giver genbrugbarheden af en kode. Vi behøver ikke at skrive den samme kode igen og igen. Det giver os også mulighed for at tilføje flere funktioner til en klasse uden at ændre den.
- Det er transitivt af natur, hvilket betyder, at hvis klasse B arver fra en anden klasse A, så vil alle underklasser af B automatisk arve fra klasse A.
Arvetyper
- Enkelt Arv : Enkeltniveauarv gør det muligt for en afledt klasse at arve karakteristika fra en enkeltforælderklasse.
- Multilevel arv: Multi-level nedarvning gør det muligt for en afledt klasse at arve egenskaber fra en umiddelbar overordnet klasse, som igen arver egenskaber fra sin overordnede klasse.
- Hierarkisk arv: Nedarvning på hierarkisk niveau gør det muligt for mere end én afledt klasse at arve egenskaber fra en overordnet klasse.
- Multipel arv: Arv på flere niveauer gør det muligt for én afledt klasse at arve egenskaber fra mere end én basisklasse.
Arv i Python
I ovenstående artikel har vi oprettet to klasser, nemlig Person (forældreklasse) og Medarbejder (Børneklasse). Medarbejderklassen arver fra Personklassen. Vi kan bruge personklassens metoder gennem medarbejderklassen som ses i displayfunktionen i ovenstående kode. En underordnet klasse kan også ændre adfærden for den overordnede klasse som set gennem 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()> Produktion
Rahul 886012 My name is Rahul IdNumber: 886012 Post: Intern>
Bemærk: For mere information, se vores Arv i Python tutorial.
Python polymorfisme
I objektorienteret programmeringspython betyder polymorfi simpelthen at have mange former. For eksempel skal vi bestemme, om den givne fugleart flyver eller ej, ved hjælp af polymorfi kan vi gøre dette ved hjælp af en enkelt funktion.
Polymorfi i Python
Denne kode demonstrerer konceptet med Python oops-arv og metodetilsidesættelse i Python-klasser. Det viser, hvordan underklasser kan tilsidesætte metoder defineret i deres overordnede klasse for at give specifik adfærd, mens de stadig arver andre metoder fra overordnet klasse.
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()> Produktion
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.>
Bemærk: For mere information, se vores Polymorfi i Python Tutorial.
Python-indkapsling
I Python objektorienteret programmering er Encapsulation et af de grundlæggende begreber inden for objektorienteret programmering (OOP). Den beskriver ideen om at pakke data og de metoder, der arbejder på data inden for en enhed. Dette sætter begrænsninger for direkte adgang til variabler og metoder og kan forhindre utilsigtet ændring af data. For at forhindre utilsigtet ændring kan et objekts variabel kun ændres ved hjælp af et objekts metode. Disse typer variabler er kendt som private variabler.
En klasse er et eksempel på indkapsling, da den indkapsler alle de data, der er medlemsfunktioner, variabler osv.

Indkapsling i Python
I ovenstående eksempel har vi oprettet c-variablen som den private attribut. Vi kan ikke engang få direkte adgang til denne attribut og kan ikke engang ændre dens værdi.
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> Produktion
techcodeview.com>
Bemærk: for mere information, se vores Indkapsling i Python Tutorial.
hvordan man finder blokerede numre på Android
Dataabstraktion
Det skjuler unødvendige kodedetaljer for brugeren. Også når vi ikke ønsker at udlevere følsomme dele af vores kodeimplementering, og det er her dataabstraktionen kom.
Dataabstraktion i Python kan opnås ved at oprette abstrakte klasser.
Objektorienteret programmering i Python | Sæt 2 (Dataskjul og objektudskrivning)