【Python】Python面向对象多态

Python中面向对象的多态主要通过以下几种方式实现:

  1. 鸭子类型(Duck Typing)
    不考虑对象的类型,只关心对象是否支持调用的属性和方法。
## python www.itzhimei.com 代码
class Dog:
  def speak(self):
    print("Bark!")

class Cat:
  def speak(self):
    print("Meow!")

def animal_speak(animal):
  animal.speak()

d = Dog() 
c = Cat()

animal_speak(d)
animal_speak(c)
  1. 重载操作符(Operator Overloading)
    实现对内置操作符如+、*等的支持。
## python www.itzhimei.com 代码
class Vector:
  def __init__(self, x, y):
    self.x = x
    self.y = y

  def __add__(self, other):
    return Vector(self.x + other.x, self.y + other.y)

v1 = Vector(1, 2)
v2 = Vector(2, 3)
v3 = v1 + v2
  1. 内置函数操作
    实现对内置函数比如len、str等的支持。
## python www.itzhimei.com 代码
class Person:

  def __str__(self):
    return self.name

p = Person()
print(str(p)) 

通过以上方法,Python可以实现面向对象的多态。