Sobes.tech
Junior — Middle

გაამართეთ duck typing კონცეფცია და რა განსხვავებაა მისი სტატიკური ტიპიზაციიდან პროგრამირებაში.

sobes.tech AI

პასუხი AI-სგან

Duck typing — ეს კონცეფციაა პროგრამირებაში, სადაც ობიექტის ტიპი არ განისაზღვრება მისი კლასი ან ინტერფეისი, არამედ გარკვეული მეთოდების და თვისებების არსებობით. თუ ობიექტი როგორც "გოჭი" (მოიცავს საჭირო მეთოდებს), მაშინ ის მიიჩნევა შესაბამისად.

სწრაფი განსხვავება სტატიკურ ტიპიზაციასთან:

  • სტატიკურ ტიპიზაციაში, ტიპები ირკვევა კომპილაციის დროს, და ობიექტებმა უნდა შეესაბამებოდნენ განსაზღვრულ ტიპებს.
  • 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 მეთოდის არსებობაზე.