栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python:多态(鸭子类型)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python:多态(鸭子类型)

多态
  • 定义
  • 举例说明
    • 运算符+
    • 函数多态
    • 类多态
  • 多态与继承

定义

多态性的字面意思是指以不同形式出现的条件。

多态是编程中非常重要的概念。它指的是使用单个类型实体(方法,运算符或对象)来表示不同场景中的不同类型。

举例说明 运算符+
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 多态

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/932580.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号