Python中面向对象的多态主要通过以下几种方式实现:
- 鸭子类型(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)
- 重载操作符(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
- 内置函数操作
实现对内置函数比如len、str等的支持。
## python www.itzhimei.com 代码
class Person:
def __str__(self):
return self.name
p = Person()
print(str(p))
通过以上方法,Python可以实现面向对象的多态。