- 定义
- 举例说明
- 运算符+
- 函数多态
- 类多态
- 多态与继承
多态性的字面意思是指以不同形式出现的条件。
举例说明 运算符+多态是编程中非常重要的概念。它指的是使用单个类型实体(方法,运算符或对象)来表示不同场景中的不同类型。
num1 = 1 num2 = 2 print(num1 + num2) # 输出结果为:3
Str1 = "Hello" Str2 = "Word" print(Str1 + " " + Str2) # 输出结果为:Hello Word
由此分析,加法运算符对不同的数据类型执行了不同的操作:对数字就是进行加法计算,对应字符串操作就起到了拼接作用。
函数多态print(len("nhooo"))
print(len(["Python", "Java", "C"]))
print(len({"Name": "John", "Address": "Nepal"}))
# 结果:5 3 2
由此分析,len()函数返回有关特定数据类型的特定信息。
类多态class Cat():
def make_sound(self):
print("Meow")
class Dog():
def make_sound(self):
print("Bark")
class Duck():
def make_sound(self):
print("GaGa")
animal_list = [Cat,Dog,Duck]
for animal in animal_list:
animal().make_sound()
可以将这具有相似的结构,并具有相同的方法名称的不同的对象打包到一个元组中,并使用一个公共animal变量对其进行迭代。
多态与继承Python中的子类也从父类继承方法和属性。我们可以专门针对子类重新定义某些方法和属性,这称为Method Overriding(方法重写)。
多态性使我们能够访问与父类同名的这些覆盖的方法和属性。
from math import pi
class Shape:
def __init__(self, name):
self.name = name
def area(self):
pass
def fact(self):
return "我是一个二维的形状。"
def __str__(self):
return self.name
class Square(Shape):
def __init__(self, length):
super().__init__("Square")
self.length = length
def area(self):
return self.length**2
def fact(self):
return "正方形的每个角都是90度。"
class Circle(Shape):
def __init__(self, radius):
super().__init__("Circle")
self.radius = radius
def area(self):
return pi*self.radius**2
a = Square(4)
b = Circle(7)
print(b)
print(b.fact())
print(a.fact())
print(b.area())
# Circle
# 我是一个二维的形状。
# 正方形的每个角都是90度。
# 153.93804002589985
在这里,可以看到在父类中使用了诸如__str __()之类的未在子类中重写的方法。
由于多态性,Python解释器自动识别出对象a(Square类)的fact()方法被重写。它使用了在子类中定义的那个。
另一方面,由于对象b的fact()方法没有被重写,因此可以从Parent Shape类中使用它。
注意:方法重载是一种无法在Python中创建具有相同名称但参数不同的方法的方法。
Python 多态



