Sobes.tech
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.