鸭子类型这个概念最早可以追溯到 James Whitcomb Riley 的一个童谣,“When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck,” 这个童谣表达了一种实用主义的思想,即通过行为来推断对象的类型,而不是通过对象所在的类或其继承关系。
鸭子类型(Duck Typing)是一种动态类型的概念,它是指如果一个对象像鸭子一样会走路、游泳,叫声也像鸭子一样,那么它就可以被视为一只鸭子。
在编程中,鸭子类型是指不关心对象的真正类型,只关心对象是否拥有某些特定的属性或方法,只要拥有这些属性或方法,就可以当作该类型对象使用。因此,鸭子类型常用于动态语言中,如Python、JavaScript等,让程序更加灵活。