透过问题看本质的经典例子
一个经典的例子是关于"鸭子类型"的问题。所谓鸭子类型是指一个对象的可用性不是由它是否属于特定的类或继承了特定的接口来决定,而是由它的方法和属性是否符合特定的要求来决定。
假设有一个函数需要一个参数,并假设这个参数必须有一个名为"quack"的方法。在传统的面向对象编程中,我们可能会要求传入的参数必须是一个特定的类的实例,这个类必须有一个"quack"方法。但是在鸭子类型中,我们只关心传入的参数是否有一个"quack"方法,而不关心它是否属于特定的类。
下面是一个使用鸭子类型的例子:
class Duck:
def quack(self):
print("Quack!")
class Robot:
def quack(self):
print("Beep beep!")
def make_quack(duck):
duck.quack()
duck = Duck()
robot = Robot()
make_quack(duck) # 输出:Quack!
make_quack(robot) # 输出:Beep beep!
在这个例子中,make_quack函数接受一个参数,并调用它的quack方法。无论传入的参数是Duck类的实例还是Robot类的实例,只要它有一个quack方法,函数就能正确地工作。
这个例子展示了透过问题看本质的思想。我们并不关心传入的参数的具体类型,只关心它是否具有我们需要的方法。这种思想在动态类型语言中尤为重要,它使得代码更加灵活和可复用
原文地址: http://www.cveoy.top/t/topic/iQwJ 著作权归作者所有。请勿转载和采集!