Python面向对象编程中的多态性表示的是同一种操作可以在不同的对象上有不同的表现。多态性指的是可以无视对象的具体类型,而直接调用某个方法,这个方法会根据对象的实际类型而进行不同的操作。这是通过继承和重写方法实现的。
在Python中,任何类都有一个公共的祖先:object类。Python中的所有对象最终都会继承自这个基础类。这个特性允许我们在创建方法时,将参数类型设定为最基础的object。这样我们就可以接收任何类型的参数,并在方法中检查参数的具体类型,以便执行不同的操作。
下面通过一个简单的例子来进行说明:
python
class Animal(object):
def say(self):
raise NotImplementedError("Subclass must implement abstract method")
class Dog(Animal):
def say(self):
return "Woof! Woof!"
class Cat(Animal):
def say(self):
return "Meow!"
animals = [Dog(), Cat()]
for animal in animals:
print(animal.say())
在这个例子中,我们定义了一个基础类Animal,在这个基础类中定义了一个say方法,但这个方法并没有实现任何功能,而是抛出一个NotImplementedError异常。我们期望其子类去重写这个方法。
然后我们定义了两个Animal的子类:Dog和Cat,并各自重新定义了say方法,返回了各自的叫声。
当我们创建了Dog和Cat对象并放入列表,我们可以遍历这个列表,并调用里面每个动物的say方法,它们各自会执行各自的操作,这就体现了多态性。
来源:https://www.jdmm.com.cn/saishibaodao/21236.html
转发:https://www.jdmm.com.cn/saishibaodao/21235.html