Junior — Middle
Εξηγήστε την έννοια του duck typing και πώς διαφέρει από τον στατικό τύπο στην προγραμματισμό.
sobes.tech AI
Απάντηση από AI
Το duck typing είναι μια έννοια στον προγραμματισμό όπου ο τύπος ενός αντικειμένου καθορίζεται όχι από την κλάση ή το interface του, αλλά από την παρουσία ορισμένων μεθόδων και ιδιοτήτων. Αν ένα αντικείμενο συμπεριφέρεται όπως "πάπια" (έχει τις απαραίτητες μεθόδους), θεωρείται κατάλληλο.
Διαφορά με τον στατικό τύπο:
- Στον στατικό τύπο, οι τύποι ελέγχονται κατά τη μεταγλώττιση, και τα αντικείμενα πρέπει να ταιριάζουν ρητά με ορισμένους τύπους.
- Στο duck typing, ο έλεγχος γίνεται κατά την εκτέλεση, και μόνο η συμβατότητα της διεπαφής (μεθόδων/ιδιοτήτων) είναι σημαντική, όχι η κληρονομικότητα ή οι δηλωμένοι τύποι.
Παράδειγμα σε Python (duck typing):
class Duck:
def quack(self):
print("Κρακ-κρακ")
class Person:
def quack(self):
print("Μπορώ να κάνω κρακ όπως μια πάπια")
def make_it_quack(thing):
thing.quack()
make_it_quack(Duck()) # Κρακ-κρακ
make_it_quack(Person()) # Μπορώ να κάνω κρακ όπως μια πάπια
Εδώ, η συνάρτηση δεν ανησυχεί για τον τύπο του αντικειμένου, μόνο για την ύπαρξη της μεθόδου quack.