Python objektorienteret programmering

I denne vejledning lærer du om objektorienteret programmering (OOP) i Python og dets grundlæggende koncept ved hjælp af eksempler.

Video: Objektorienteret programmering i Python

Objektorienteret programmering

Python er et programmeringssprog med flere paradigmer. Det understøtter forskellige programmeringsmetoder.

En af de populære tilgange til løsning af et programmeringsproblem er ved at oprette objekter. Dette er kendt som Object-Oriented Programming (OOP).

Et objekt har to egenskaber:

  • egenskaber
  • opførsel

Lad os tage et eksempel:

En papegøje er kan være et objekt, da det har følgende egenskaber:

  • navn, alder, farve som attributter
  • sang, dans som opførsel

Begrebet OOP i Python fokuserer på at skabe genanvendelig kode. Dette koncept er også kendt som TØR (Gentag ikke dig selv).

I Python følger begrebet OOP nogle grundlæggende principper:

Klasse

En klasse er en plan for objektet.

Vi kan tænke på klassen som en skitse af en papegøje med etiketter. Den indeholder alle detaljer om navn, farver, størrelse osv. Baseret på disse beskrivelser kan vi studere om papegøjen. Her er en papegøje et objekt.

Eksemplet for klasse papegøje kan være:

 klasse Papegøje: bestå

Her bruger vi classnøgleordet til at definere en tom klasse papegøje. Fra klasse konstruerer vi forekomster. En forekomst er et bestemt objekt oprettet fra en bestemt klasse.

Objekt

Et objekt (forekomst) er en instantiering af en klasse. Når klasse er defineret, defineres kun beskrivelsen for objektet. Derfor er der ikke tildelt nogen hukommelse eller lagerplads.

Eksemplet for objekt af papegøjeklassen kan være:

 obj = papegøje ()

Her er obj et objekt i klassen Parrot.

Antag, at vi har detaljer om papegøjer. Nu skal vi vise, hvordan man bygger klassen og objekterne til papegøjer.

Eksempel 1: Oprettelse af klasse og objekt i Python

 class Parrot: # class attribute species = "bird" # instance attribute def __init__(self, name, age): self.name = name self.age = age # instantiate the Parrot class blu = Parrot("Blu", 10) woo = Parrot("Woo", 15) # access the class attributes print("Blu is a ()".format(blu.__class__.species)) print("Woo is also a ()".format(woo.__class__.species)) # access the instance attributes print("() is () years old".format( blu.name, blu.age)) print("() is () years old".format( woo.name, woo.age))

Produktion

 Blu er en fugl Woo er også en fugl Blu er 10 år gammel Woo er 15 år gammel

I ovenstående program oprettede vi en klasse med navnet Papegøje. Derefter definerer vi attributter. Attributterne er et kendetegn ved et objekt.

Disse attributter er defineret inden for __init__metoden i klassen. Det er initialiseringsmetoden, der først køres, så snart objektet er oprettet.

Derefter opretter vi forekomster af papegøjeklassen. Her er blu og woo referencer (værdi) til vores nye objekter.

Vi kan få adgang til klasseattributten ved hjælp af __class__.species. Klasseattributter er de samme for alle forekomster af en klasse. På samme måde får vi adgang til instansattributter ved hjælp af blu.nameog blu.age. Imidlertid er instansattributter forskellige for hver forekomst af en klasse.

Hvis du vil lære mere om klasser og objekter, skal du gå til Python Classes and Objects

Metoder

Metoder er funktioner defineret inde i kroppen af ​​en klasse. De bruges til at definere et objekts opførsel.

Eksempel 2: Oprettelse af metoder i Python

 class Parrot: # instance attributes def __init__(self, name, age): self.name = name self.age = age # instance method def sing(self, song): return "() sings ()".format(self.name, song) def dance(self): return "() is now dancing".format(self.name) # instantiate the object blu = Parrot("Blu", 10) # call our instance methods print(blu.sing("'Happy'")) print(blu.dance())

Produktion

 Blu synger 'Happy' Blu danser nu

I ovenstående program definerer vi to metoder, dvs. sing()og dance(). Disse kaldes instansmetoder fordi de kaldes på en instans objekt dvs blu.

Arv

Inheritance is a way of creating a new class for using details of an existing class without modifying it. The newly formed class is a derived class (or child class). Similarly, the existing class is a base class (or parent class).

Example 3: Use of Inheritance in Python

 # parent class class Bird: def __init__(self): print("Bird is ready") def whoisThis(self): print("Bird") def swim(self): print("Swim faster") # child class class Penguin(Bird): def __init__(self): # call super() function super().__init__() print("Penguin is ready") def whoisThis(self): print("Penguin") def run(self): print("Run faster") peggy = Penguin() peggy.whoisThis() peggy.swim() peggy.run()

Output

 Bird is ready Penguin is ready Penguin Swim faster Run faster

In the above program, we created two classes i.e. Bird (parent class) and Penguin (child class). The child class inherits the functions of parent class. We can see this from the swim() method.

Again, the child class modified the behavior of the parent class. We can see this from the whoisThis() method. Furthermore, we extend the functions of the parent class, by creating a new run() method.

Additionally, we use the super() function inside the __init__() method. This allows us to run the __init__() method of the parent class inside the child class.

Encapsulation

Using OOP in Python, we can restrict access to methods and variables. This prevents data from direct modification which is called encapsulation. In Python, we denote private attributes using underscore as the prefix i.e single _ or double __.

Example 4: Data Encapsulation in Python

 class Computer: def __init__(self): self.__maxprice = 900 def sell(self): print("Selling Price: ()".format(self.__maxprice)) def setMaxPrice(self, price): self.__maxprice = price c = Computer() c.sell() # change the price c.__maxprice = 1000 c.sell() # using setter function c.setMaxPrice(1000) c.sell()

Output

 Selling Price: 900 Selling Price: 900 Selling Price: 1000

In the above program, we defined a Computer class.

We used __init__() method to store the maximum selling price of Computer. We tried to modify the price. However, we can't change it because Python treats the __maxprice as private attributes.

As shown, to change the value, we have to use a setter function i.e setMaxPrice() which takes price as a parameter.

Polymorphism

Polymorphism is an ability (in OOP) to use a common interface for multiple forms (data types).

Suppose, we need to color a shape, there are multiple shape options (rectangle, square, circle). However we could use the same method to color any shape. This concept is called Polymorphism.

Example 5: Using Polymorphism in Python

 class Parrot: def fly(self): print("Parrot can fly") def swim(self): print("Parrot can't swim") class Penguin: def fly(self): print("Penguin can't fly") def swim(self): print("Penguin can swim") # common interface def flying_test(bird): bird.fly() #instantiate objects blu = Parrot() peggy = Penguin() # passing the object flying_test(blu) flying_test(peggy)

Output

 Parrot can fly Penguin can't fly

In the above program, we defined two classes Parrot and Penguin. Each of them have a common fly() method. However, their functions are different.

For at bruge polymorfisme oprettede vi en fælles grænseflade, dvs. flying_test()funktion, der tager ethvert objekt og kalder objektets fly()metode. Således, da vi passerede de blå og peggy objekter i flying_test()funktionen, kørte den effektivt.

Nøglepunkter at huske:

  • Objektorienteret programmering gør programmet let at forstå såvel som effektivt.
  • Da klassen kan deles, kan koden genbruges.
  • Data er sikre og sikre med dataabstraktion.
  • Polymorfisme tillader den samme grænseflade til forskellige objekter, så programmører kan skrive effektiv kode.

Interessante artikler...