Duck typing là gì?

Phrase Programming

Duck typing là một khái niệm liên quan đến dynamic typing, trong đó kiểu hoặc lớp (class) của một đối tượng (object) ít quan trọng hơn phương thức mà nó định nghĩa. Sử dụng duck typing chúng ta không kiểm tra các kiểu. Thay vào đó chúng ta kiểm tra sự hiện diện của một phương thức hoặc thuộc tính nhất định. Lý do đằng sau cái tên là bài kiểm tra vịt: "Nếu nó giống vịt, bơi như vịt và lang thang như vịt thì có lẽ nó là vịt". Hãy lấy một ví dụ code Python đơn giản để hiểu rõ ràng:


class Duck:
    def quack(self):
        print("Quack")
  
class Goose:
    def quack(self):
        print("Quack Quack")
  
class Dog:
    def bark(self):
        print("I just bark")
  
class ItQuacks:
    def __init__(self, animal):
        animal.quack()
  
ItQuacks(Duck())
ItQuacks(Goose())
ItQuacks(Dog())

Các lớp có triển khai phương thức quack sẽ có thể gọi (các đối tượng Duck, Goose) nhưng đối với lớp Dog không cung cấp triển khai phương thức quack, sẽ nhận được “AttributeError” nếu chúng ta cố gắng truyền một đối tượng.

Learning English Everyday