Sobes.tech
Junior — Middle

Izskaidrojiet duck typing koncepciju un kā tā atšķiras no statiskās tipizācijas programmēšanā.

sobes.tech AI

Atbilde no AI

Duck typing ir koncepcija programmēšanā, kurā objekta tips netiek noteikts pēc tā klases vai saskarnes, bet pēc noteiktu metožu un īpašību klātbūtnes. Ja objekts uzvedas kā "pīle" (ir nepieciešamās metodes), tas tiek uzskatīts par piemērotu.

Atšķirība no statiskās tipizācijas:

  • Statiskajā tipizācijā tipi tiek pārbaudīti kompilācijas laikā, un objektiem jāatbilst noteiktiem tipiem.
  • Duck typing gadījumā pārbaude notiek izpildes laikā, un svarīga ir tikai saskarnes saderība (metodes/īpašības), nevis mantošana vai deklarētie tipi.

Python piemērs (duck typing):

class Duck:
    def quack(self):
        print("Kvak kvak")

class Person:
    def quack(self):
        print("Es varu kvakēt kā pīle")

def make_it_quack(thing):
    thing.quack()

make_it_quack(Duck())    # Kvak kvak
make_it_quack(Person())  # Es varu kvakēt kā pīle

Šeit funkcija nesatraucas par objekta tipu, tikai par quack metodes klātbūtni.