Μια αφηρημένη τάξη είναι ένα σχέδιο για τις σχετικές τάξεις. Δεν μπορεί να τεκμηριωθεί, αλλά μπορεί να προσπελαστεί μόνο μέσω κληρονομικότητας. Μια υποκλάση που κληρονομεί μια αφηρημένη κλάση απαιτείται για την εφαρμογή των αφηρημένων μεθόδων της. Διαφορετικά, ο μεταγλωττιστής θα επισημάνει ένα σφάλμα.
Οι αφηρημένες μέθοδοι είναι μέθοδοι χωρίς εφαρμογή. Μια αφηρημένη τάξη μπορεί να έχει αφηρημένες μεθόδους ή συγκεκριμένες (φυσιολογικές) μεθόδους.
Η Python δεν υποστηρίζει άμεσα αφηρημένες μεθόδους, αλλά μπορείτε να έχετε πρόσβαση σε αυτές μέσω αλφάβητο (αφηρημένη βασική κλάση) ενότητα.
Χρήση της μονάδας abc στην Python
Για να ορίσετε μια αφηρημένη κλάση στην Python, πρέπει εισαγωγή η μονάδα abc.
Δείτε το παρακάτω παράδειγμα:
από την εισαγωγή abc ABC
class AbstractClassName (ABC):
πέρασμα
Προσέξτε τη λέξη -κλειδί πέρασμα. Αυτή η λέξη -κλειδί χρησιμοποιείται για να εμφανιστεί κενός κώδικας. Αν το αφήσετε έξω θα προκύψει σφάλμα κατά τη σύνταξη.
Σχετίζεται με: Θα κάνει η Τζούλια μια προσφορά για τον θρόνο της Python;
Ορισμοί κλάσης, ορισμοί μεθόδων, βρόχοι και αν οι δηλώσεις αναμένουν υλοποιήσεις κώδικα. Έτσι, το να τα αφήσουμε έξω δίνει ένα σφάλμα μεταγλώττισης. Για να αποφύγετε αυτό, χρησιμοποιήστε πέρασμα να αντικαταστήσει τον κενό κωδικό.
Για να ορίσετε μια αφηρημένη μέθοδο στην Python, χρησιμοποιήστε το @abstractmethod διακοσμητής:
από abc εισαγωγή ABC, abstractmethod
class AbstractClassName (ABC):
@abstractmethod
def abstractΜέθοδος (εαυτός):
πέρασμα
Σε αυτό το σημείο, θα ήταν καλό να αναφερθεί ότι - σε αντίθεση με την Java - οι αφηρημένες μέθοδοι στην Python μπορούν να έχουν εφαρμογή. Αυτή η εφαρμογή μπορεί να έχει πρόσβαση με την επιτακτική μέθοδο χρησιμοποιώντας το σούπερ() μέθοδος.
εισαγωγή abc
class AbstractClass (ABC):
def __init __ (self, value):
self.value = αξία
super () .__ init __ ()
@abc.abstractmethod
def some_action (self):
εκτύπωση ("Αυτή είναι η γονική εφαρμογή.")
κλάση MySubclass (AbstractClassExample):
def some_action (self):
super (). some_action ()
print ("Αυτή είναι η υλοποίηση της υποκλάσης. ")
x = MySubclass ()
x.some_action ()
Είναι ενδιαφέρον να σημειωθεί ότι μπορείτε να ορίσετε έναν κατασκευαστή σε μια αφηρημένη κλάση.
Στη γραμμή 9, μπορείτε να το παρατηρήσετε @abc.abstractmethod έχει χρησιμοποιηθεί ως διακοσμητής αφηρημένης μεθόδου. Αυτός είναι ένας άλλος τρόπος για να το κάνετε αυτό, εκτός από την προηγούμενη μορφή. Σημειώστε επίσης ότι η γραμμή 1 είναι μικρότερη (εισαγωγή abc) από την προηγούμενη εισαγωγή γραμμής 1 που χρησιμοποιήσατε.
Όλα είναι θέμα επιλογής. Ωστόσο, πολλοί μπορεί να βρουν τη δεύτερη μέθοδο συντομότερη.
Εξαίρεση Χειρισμός στην Python
Παρατηρήστε ότι δεν υπάρχει τρόπος καταγραφής σφαλμάτων στο παράδειγμα κώδικα που δόθηκε παραπάνω. Τα σφάλματα εμφανίζονται συχνότερα και όχι, και το να έχεις έναν αξιόπιστο τρόπο για να τα αποκτήσεις μπορεί να αλλάξει το παιχνίδι.
Αυτά τα συμβάντα που διαταράσσουν την κανονική ροή του προγράμματος ονομάζονται "εξαιρέσεις" και η διαχείρισή τους ονομάζεται "χειρισμός εξαιρέσεων". Επόμενο στη λίστα ανάγνωσης Python θα πρέπει να είναι ο χειρισμός εξαιρέσεων.
Καλύψτε τις βάσεις κωδικοποίησης με εξαιρέσεις Python.
Διαβάστε Επόμενο
- Προγραμματισμός
- Προγραμματισμός
- Πύθων
- Γλώσσες προγραμματισμού
Ο Jerome είναι Staff Writer στο MakeUseOf. Καλύπτει άρθρα σχετικά με τον Προγραμματισμό και το Linux. Είναι επίσης λάτρης των κρυπτογράφησης και παρακολουθεί πάντα τη βιομηχανία κρυπτογράφησης.
Εγγραφείτε στο newsletter μας
Εγγραφείτε στο ενημερωτικό μας δελτίο για τεχνικές συμβουλές, κριτικές, δωρεάν ebooks και αποκλειστικές προσφορές!
Κάντε κλικ εδώ για εγγραφή