高企达建设有限公司网站,哪家公司做网站结算好,骏域建网站,房产信息网查不到楼盘信息在 Python 中#xff0c;多态#xff08;Polymorphism#xff09;是指不同的对象可以对相同的消息#xff08;方法调用#xff09;做出不同的响应。 简单来说#xff0c;多态允许使用一个统一的接口来操作不同类型的对象#xff0c;而这些对象会根据自身的类型来执行相应…在 Python 中多态Polymorphism是指不同的对象可以对相同的消息方法调用做出不同的响应。 简单来说多态允许使用一个统一的接口来操作不同类型的对象而这些对象会根据自身的类型来执行相应的具体操作。 例如假设有一个父类 Shape 和几个子类 Circle、Rectangle 、Triangle 它们都有一个 area 方法来计算面积。
class Shape:def area(self):passclass Circle(Shape):def __init__(self, radius):self.radius radiusdef area(self):return 3.14 * self.radius ** 2class Rectangle(Shape):def __init__(self, length, width):self.length lengthself.width widthdef area(self):return self.length * self.widthclass Triangle(Shape):def __init__(self, base, height):self.base baseself.height heightdef area(self):return 0.5 * self.base * self.height
然后可以创建这些不同形状的对象并通过相同的方式调用 area 方法来获取它们各自的面积计算结果。
shapes [Circle(5), Rectangle(4, 6), Triangle(3, 8)]for shape in shapes:print(shape.area())
尽管都是调用 area 方法但不同的子类对象会根据自己的实现计算并返回不同的结果这就是多态的体现。它增加了代码的灵活性和可扩展性使得程序更易于维护和扩展。
多态性 示例
#多态#继承多态一定是发生在子类和父类之间的重写子类重写父类中的方法class Animal:def say(self):print(animal)class Cat(Animal):def say(self):print(I am a cat)class Dog(Animal):def say(self):print(I am a dog)class Duck(Animal):def say(self):print(I am a duck)duckDuck()
duck.say()dogDog()
dog.say()#输出分别为:
#I am a duck
#I am a dog
子类重写父类方法后同一个方法‘say’的输出不同即呈现多态性。 在 Python 中鸭子类型Duck Typing是一种编程风格。 其理念是如果一个对象的行为方法和属性看起来像鸭子走路像鸭子叫声像鸭子那么我们就可以把它当作鸭子。 换句话说在使用对象时不关注对象的类型而是关注对象是否具有所需的方法和属性。只要对象具有所需的方法和属性就可以在相应的上下文中使用而不管它具体属于哪个类。 例如如果有两个类 Bird 和 Plane 它们都有一个 fly 方法。
class Bird:def fly(self):print(Bird is flying)class Plane:def fly(self):print(Plane is flying)def make_fly(obj):obj.fly()
在某个函数中如果需要一个能够“飞行”的对象我们可以接受这两个类的实例因为它们都具有 fly 方法符合“能够飞行”的要求。
bird Bird()
# 创建了一个 Bird 类的实例 birdplane Plane()
# 创建了一个 Plane 类的实例 planemake_fly(bird)
# 调用 make_fly 函数并将 bird 作为参数传递进去
# 在函数内部通过 obj.fly() 调用了 Bird 类中定义的 fly 方法输出 Bird is flyingmake_fly(plane)
# 调用 make_fly 函数并将 plane 作为参数传递进去
# 在函数内部通过 obj.fly() 调用了 Plane 类中定义的 fly 方法输出 Plane is flying 这种编程风格强调的是对象的行为而不是对象的类型使得代码更加灵活和可扩展。
鸭子类型示例
#鸭子类型长得像鸭子它就是鸭子类型#多个类中实现了同一个方法当前的方法名一样
class Cat:def say(self):print(I am a cat)class Dog:def say(self):print(I am a dog)class Duck:def say(self):print(I am a duck)animal Cat
animal().say()animal Dog
animal().say()#输出:I am a cat
I am a dog#这也是一种多态的体现