Εναπόδοση Python

Εναπόδοση Python

Η κληρονομικότητα μας επιτρέπει να καθορίσουμε κλάσεις που κληρονομούν όλες τις μεθόδους και τις ιδιότητες μιας άλλης κλάσης.

ΠρογονικήΕίναι η κλάση που κληρονομεί, και ονομάζεται επίσης κλάση βάσης.

ΔιασποράΕίναι η κλάση που προέρχεται από άλλη κλάση, και ονομάζεται επίσης κλάση διασποράς.

Δημιουργία προγονικής κλάσης

Οποιαδήποτε κλάση μπορεί να είναι προγονική, οπότε η γλώσσα είναι ίδια με τη δημιουργία οποιασδήποτε άλλης κλάσης:

Instance

Δημιουργία μιας κλάσης με το όνομα Person που περιέχει τις ιδιότητες firstname και lastname καθώς και τον τρόπο εκτύπωσης printname:

class Person:
  def __init__(self, onoma, epitheto):
    self.onoma = fname
    self.epitheto = lname
  def printname(self):
    print(self.onoma, self.epitheto)
# Χρήση της Person για τη δημιουργία αντικειμένου και εκτέλεση της μεθόδου printname:
x = Person("Bill", "Gates")
x.printname()

Εκτέλεση Παραδείγματος

Δημιουργία υποκλάσης

Για να δημιουργήσετε μια κλάση που κληρονομεί λειτουργίες από άλλη κλάση, στείλτε την κλάση κληρονομικότητας ως παράμετρο στη δημιουργία της υποκλάσης:

Instance

Δημιουργήστε μια κλάση με το όνομα Student που κληρονομεί ιδιότητες και μεθόδους από την κλάση Person:

class Student(Person):
  pass

Αναγνώριση:Αν δεν θέλετε να προσθέσετε άλλες ιδιότητες ή μεθόδους στην κλάση, χρησιμοποιήστε pass keyword.

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

Instance

Δημιουργήστε ένα αντικείμενο της κλάσης Student και εκτελέστε τη μέθοδο printname:

x = Student("Elon", "Musk")
x.printname()

Εκτέλεση Παραδείγματος

Προσθήκη συνάρτησης __init__()

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

θέλουμε να προσθέσουμε __init__() λειτουργία προστίθεται στην κλάση υποκλήσης (όχι pass keyword).

Αναγνώριση:Κάθε φορά που χρησιμοποιείτε τη κλάση για τη δημιουργία νέων αντικειμένων, η συνάρτηση __init__() καλείται αυτόματα.

Instance

Προσθέστε τη συνάρτηση __init__() στη κλάση Student:

class Student(Person):
  def __init__(self, onoma, epitheto):
    # Προσθήκη ιδιωτικών χαρακτηριστικών κ.λπ.

Όταν προσθέτετε τη συνάρτηση __init__(), η κλάση υποκλήσης δεν κληρονομεί τη συνάρτηση __init__() του γονικού στοιχείου.

Αναγνώριση:Η συνάρτηση __init__() της κλάσης υποκλήσης καλύπτει την κληρονομικότητα της συνάρτησης __init__() του γονικού στοιχείου.

Για να διατηρήσετε την κληρονομικότητα της συνάρτησης __init__() του γονικού στοιχείου, προσθέστε την κλήση της συνάρτησης __init__() του γονικού στοιχείου:

Instance

class Student(Person):
  def __init__(self, onoma, epitheto):
    Person.__init__(self, onoma, epitheto)

Εκτέλεση Παραδείγματος

Τώρα, έχουμε επιτυχώς προσθέσει τη συνάρτηση __init__() και διατηρούμε την κληρονομικότητα του γονικού στοιχείου, είμαστε έτοιμοι να προσθέσουμε λειτουργίες στη συνάρτηση __init__()

χρήση της super() λειτουργίας

O Python έχει επίσης μια super() λειτουργίας, η οποία θα επιτρέψει στην κλάση υποκλήσης να αποκτήσει όλα τα μέθοδους και τα ιδιωτικά χαρακτηριστικά από την κλάση κληρονομικότητας:

Instance

class Student(Person):
  def __init__(self, onoma, epitheto):
    super().__init__(fname, lname)

Εκτέλεση Παραδείγματος

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

προσθέτει ιδιωτικούς χαρακτηριστικούς

Instance

Προσθέστε το όνομα του έτους αποφοίτησης τοις ιδιωτικοῖς χαρακτηριστικούς Student Κλάση:

class Student(Person):
  def __init__(self, onoma, epitheto):
    super().__init__(fname, lname)
    self.graduationyear = 2019

Εκτέλεση Παραδείγματος

Σε αυτό το παράδειγμα, το έτος 2019 πρέπει να είναι μια μεταβλητή και να μεταφέρεται στην κλάση Student κατά τη δημιουργία του αντικειμένου student. Για αυτό, προσθέστε μια άλλη παράμετρο στον γλωσσικό τύπο __init__():

Instance

Προσθέστε έτος παράμετροι, και μεταφέρετε το σωστό έτος κατά τη δημιουργία του αντικειμένου:

class Student(Person):
  def __init__(self, fname, lname, έτος)
    super().__init__(fname, lname)
    self.graduationyear = year
x = Student("Elon", "Musk", 2019)

Εκτέλεση Παραδείγματος

Προσθέστε Μέθοδο

Instance

Προσθέστε το όνομα welcome Προσθέστε τον τύπο μέθοδου στην κλάση Student:

class Student(Person):
  def __init__(self, fname, lname, year):
    super().__init__(fname, lname)
    self.graduationyear = year
  def welcome(self):
    print("Καλωσορίσατε", self.firstname, self.lastname, "στην τάξη του", self.graduationyear)

Εκτέλεση Παραδείγματος

Συμβουλή:Αν προσθέσετε έναν μεθόδου με το ίδιο όνομα στον υποκλάδο που υπάρχει ήδη στον κλάδο γονέα, θα καλύψετε την κληρονομική μέθοδο.