Python 多态

Python 多态

Python pipPython 字典理解

Python 多态

在本教程中,我们将学习多态,不同类型的多态以及如何借助示例演示在Python中实现它们。

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

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

让我们举个实例:

示例1:加法运算符的多态我们知道 + 运算符已在Python程序中广泛使用。但是,它没有单一用法。

对于整数数据类型,使用 + 运算符执行算术加法运算。

示例num1 = 1

num2 = 2

print(num1+num2)因此,以上程序输出 3

类似地,对于字符串数据类型,使用 + 运算符进行连接。

示例str1 = "Python"

str2 = "Programming"

print(str1+" "+str2)结果,以上程序输出 : Python Programming

在这里,我们可以看到使用运算符 + 对不同的数据类型执行了不同的操作。这是Python中最简单的多态现象之一。

Python中的函数多态Python中有一些函数可以与多种数据类型兼容。

其中一种这样的函数是len()函数。它可以在Python中与许多数据类型一起运行。让我们看一下该函数的一些示例用例。

示例2:多态len()函数示例print(len("nhooo"))

print(len(["Python", "Java", "C"]))

print(len({"Name": "John", "Address": "Nepal"}))输出结果

5

3

2在这里,我们可以看到许多数据类型(例如字符串,列表,元组,集合和字典)都可以使用len()函数。但是,我们可以看到它返回有关特定数据类型的特定信息。

Python中len()函数中的多态性Python中的类多态在面向对象编程中,多态是一个非常重要的概念。

要了解有关Python中OOP的更多信息,请访问:Python面向对象编程

在创建类方法时,我们可以使用多态的概念,因为Python允许不同的类具有相同名称的方法。

然后,我们可以稍后通过忽略正在使用的对象来概括调用这些方法。让我们看一个实例:

示例3:类方法中的多态示例class Cat:

def __init__(self, name, age):

self.name = name

self.age = age

def info(self):

print(f"我是一只猫。我的名字是 {self.name}. 我是 {self.age} 岁.")

def make_sound(self):

print("Meow")

class Dog:

def __init__(self, name, age):

self.name = name

self.age = age

def info(self):

print(f"我是一只狗。 我的名字是 {self.name}. 我是 {self.age} 岁.")

def make_sound(self):

print("Bark")

cat1 = Cat("Kitty", 2.5)

dog1 = Dog("Fluffy", 4)

for animal in (cat1, dog1):

animal.make_sound()

animal.info()

animal.make_sound()输出结果

Meow

我是一只猫。我的名字是 Kitty. 我是 2.5 岁.

Meow

Bark

我是一只狗。 我的名字是 Fluffy. 我是 4 岁.

Bark在这里,我们创建了两个类Cat和Dog。它们具有相似的结构,并具有相同的方法名称info()和make_sound()。

但是,请注意,我们还没有创建公共的超类或以任何方式将这些类链接在一起。即使这样,我们也可以将这两个不同的对象打包到一个元组中,并使用一个公共animal变量对其进行迭代。由于多态性,这是允许的。

多态与继承与其他编程语言一样,Python中的子类也从父类继承方法和属性。我们可以专门针对子类重新定义某些方法和属性,这称为Method Overriding(方法重写)。

多态性使我们能够访问与父类同名的这些覆盖的方法和属性。

让我们看一个实例:

示例4:方法重写示例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中创建具有相同名称但参数不同的方法的方法。

Python pipPython 字典理解

相关推荐

你知道“白色恋人”的意思吗?北海道特有的浪漫理由
蓝莓是树吗 长什么样子(图片)
365bet亚洲版官方

蓝莓是树吗 长什么样子(图片)

📅 07-10 👁️ 2574
权志龙身价,权志龙是富二代吗(权志龙为什么有钱)
365彩票所有官方app下载平台

权志龙身价,权志龙是富二代吗(权志龙为什么有钱)

📅 07-03 👁️ 8822