鸭子类型是一种动态类型的编程风格,它强调了对象的行为(方法和属性)而不是其类型。就像是,如果它看起来像一只鸭子,叫起来像一只鸭子,那么它就是一只鸭子。在Python中,这意味着我们关注对象是否有我们需要的方法或属性,而不是关注对象的具体类型。
class Dog:
def speak(self):
return "Woof!"
class Cat:
def speak(self):
return "Meow!"
class Duck:
def speak(self):
return "Quack!"
def animal_sound(animal):
return animal.speak()
dog = Dog()
cat = Cat()
duck = Duck()
print(animal_sound(dog)) # 输出 "Woof!"
print(animal_sound(cat)) # 输出 "Meow!"
print(animal_sound(duck)) # 输出 "Quack!"
在这个示例中,我们有三个不同的类:Dog、Cat和Duck,它们都有一个名为speak
的方法。然后,我们定义了一个名为animal_sound
的函数,它接受任何具有speak
方法的对象作为参数。这就是鸭子类型的体现,dog = Dog(),print(animal