Αντικειμενικός Προγραμματισμός Python

Σε αυτό το σεμινάριο, θα μάθετε για τον Αντικειμενοστρεφή Προγραμματισμό (OOP) στο Python και τη θεμελιώδη ιδέα του με τη βοήθεια παραδειγμάτων.

Βίντεο: Αντικειμενοστραφής προγραμματισμός στο Python

Αντικειμενοστραφής προγραμματισμός

Η Python είναι μια γλώσσα προγραμματισμού πολλαπλών παραδειγμάτων. Υποστηρίζει διαφορετικές προσεγγίσεις προγραμματισμού.

Μία από τις δημοφιλείς προσεγγίσεις για την επίλυση ενός προβλήματος προγραμματισμού είναι η δημιουργία αντικειμένων. Αυτό είναι γνωστό ως αντικειμενοστραφής προγραμματισμός (OOP).

Ένα αντικείμενο έχει δύο χαρακτηριστικά:

  • γνωρίσματα
  • η ΣΥΜΠΕΡΙΦΟΡΑ

Ας πάρουμε ένα παράδειγμα:

Ένας παπαγάλος μπορεί να είναι ένα αντικείμενο, καθώς έχει τις ακόλουθες ιδιότητες:

  • όνομα, ηλικία, χρώμα ως χαρακτηριστικά
  • τραγούδι, χορός ως συμπεριφορά

Η ιδέα του OOP στο Python εστιάζει στη δημιουργία επαναχρησιμοποιήσιμου κώδικα. Αυτή η ιδέα είναι επίσης γνωστή ως DRY (Μην επαναλαμβάνετε τον εαυτό σας).

Στην Python, η έννοια του OOP ακολουθεί ορισμένες βασικές αρχές:

Τάξη

Η τάξη είναι ένα σχεδιάγραμμα για το αντικείμενο.

Μπορούμε να σκεφτούμε την τάξη ως σκίτσο ενός παπαγάλου με ετικέτες. Περιέχει όλες τις λεπτομέρειες σχετικά με το όνομα, τα χρώματα, το μέγεθος κ.λπ. Με βάση αυτές τις περιγραφές, μπορούμε να μελετήσουμε για τον παπαγάλο. Εδώ, ένας παπαγάλος είναι ένα αντικείμενο.

Το παράδειγμα για την τάξη του παπαγάλου μπορεί να είναι:

 τάξη Parrot: pass

Εδώ, χρησιμοποιούμε τη classλέξη-κλειδί για να ορίσουμε έναν άδειο κλάδο Parrot. Από την τάξη, κατασκευάζουμε παρουσίες. Ένα παράδειγμα είναι ένα συγκεκριμένο αντικείμενο που δημιουργήθηκε από μια συγκεκριμένη κλάση.

Αντικείμενο

Ένα αντικείμενο (παρουσία) είναι μια παρουσία μιας κλάσης. Όταν ορίζεται η κλάση, καθορίζεται μόνο η περιγραφή για το αντικείμενο Επομένως, δεν έχει εκχωρηθεί μνήμη ή χώρος αποθήκευσης.

Το παράδειγμα για αντικείμενο κλάσης παπαγάλων μπορεί να είναι:

 obj = Παπαγάλος ()

Εδώ, το obj είναι ένα αντικείμενο κλάσης Parrot.

Ας υποθέσουμε ότι έχουμε λεπτομέρειες για τους παπαγάλους. Τώρα, θα δείξουμε πώς να χτίσουμε την τάξη και τα αντικείμενα των παπαγάλων.

Παράδειγμα 1: Δημιουργία κλάσης και αντικειμένου στο 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))

Παραγωγή

 Το Blu είναι ένα πουλί Το Woo είναι επίσης ένα πουλί Το Blu είναι 10 ετών και το Woo είναι 15 ετών

Στο παραπάνω πρόγραμμα, δημιουργήσαμε μια τάξη με το όνομα Parrot. Στη συνέχεια, ορίζουμε χαρακτηριστικά. Τα χαρακτηριστικά είναι ένα χαρακτηριστικό ενός αντικειμένου.

Αυτά τα χαρακτηριστικά καθορίζονται στη __init__μέθοδο της κλάσης. Είναι η μέθοδος αρχικοποίησης που εκτελείται για πρώτη φορά μόλις δημιουργηθεί το αντικείμενο.

Στη συνέχεια, δημιουργούμε παρουσίες της κλάσης Parrot. Εδώ, το blu και το woo είναι αναφορές (αξία) στα νέα μας αντικείμενα.

Μπορούμε να αποκτήσουμε πρόσβαση στο χαρακτηριστικό class χρησιμοποιώντας __class__.species. Τα χαρακτηριστικά τάξης είναι τα ίδια για όλες τις εμφανίσεις μιας τάξης. Παρομοίως, έχουμε πρόσβαση στα χαρακτηριστικά παρουσίας χρησιμοποιώντας blu.nameκαι blu.age. Ωστόσο, τα χαρακτηριστικά παρουσίας είναι διαφορετικά για κάθε παρουσία μιας κλάσης.

Για να μάθετε περισσότερα σχετικά με τα μαθήματα και τα αντικείμενα, μεταβείτε στο Python Classes and Objects

Μέθοδοι

Οι μέθοδοι είναι συναρτήσεις που ορίζονται στο σώμα μιας τάξης. Χρησιμοποιούνται για τον καθορισμό των συμπεριφορών ενός αντικειμένου.

Παράδειγμα 2: Δημιουργία μεθόδων στο 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())

Παραγωγή

 Ο Blu τραγουδά το "Happy" Το Blu χορεύει τώρα

Στο παραπάνω πρόγραμμα, ορίζουμε δύο μεθόδους, δηλαδή sing()και dance(). Αυτές ονομάζονται μέθοδοι παρουσίας επειδή καλούνται σε ένα αντικείμενο παρουσίας, δηλαδή blu.

Κληρονομία

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.

Για να χρησιμοποιήσουμε τον πολυμορφισμό, δημιουργήσαμε μια κοινή διεπαφή, δηλαδή flying_test()λειτουργία που παίρνει οποιοδήποτε αντικείμενο και καλεί τη fly()μέθοδο του αντικειμένου . Έτσι, όταν περάσαμε τα blu και peggy αντικείμενα στη flying_test()λειτουργία, έτρεξε αποτελεσματικά.

Βασικά σημεία που πρέπει να θυμάστε:

  • Ο Αντικειμενοστρεφής Προγραμματισμός καθιστά το πρόγραμμα κατανοητό και αποτελεσματικό.
  • Δεδομένου ότι η τάξη είναι κοινόχρηστη, ο κωδικός μπορεί να επαναχρησιμοποιηθεί.
  • Τα δεδομένα είναι ασφαλή και ασφαλή με την αφαίρεση δεδομένων.
  • Ο πολυμορφισμός επιτρέπει την ίδια διεπαφή για διαφορετικά αντικείμενα, έτσι ώστε οι προγραμματιστές να μπορούν να γράφουν αποδοτικό κώδικα.

ενδιαφέροντα άρθρα...