Junior — Middle
Paaiškinkite duck typing koncepciją ir kuo ji skiriasi nuo statinės tipizacijos programavime.
sobes.tech AI
Atsakymas iš AI
Duck typing yra koncepcija programavime, kurioje objekto tipas nėra nustatomas pagal jo klasę ar sąsają, bet pagal tam tikrų metodų ir savybių buvimą. Jei objektas elgiasi kaip "antis" (turi būtinus metodus), jis laikomas tinkamu.
Skirtumas nuo statinio tipavimo:
- Statinio tipavimo atveju, tipai tikrinami kompiliacijos metu, ir objektai turi aiškiai atitikti apibrėžtus tipus.
- Duck typing metu, tikrinimas vyksta vykdymo metu, ir svarbi tik sąsajos suderinamumas (metodai/savybės), o ne paveldėjimas ar deklaruoti tipai.
Python pavyzdys (duck typing):
class Duck:
def quack(self):
print("Kvak kvak")
class Person:
def quack(self):
print("Aš galiu kvakoti kaip antis")
def make_it_quack(thing):
thing.quack()
make_it_quack(Duck()) # Kvak kvak
make_it_quack(Person()) # Aš galiu kvakoti kaip antis
Čia funkcija nesirūpina objekto tipu, tik quack metodo buvimu.