什么是多态:多态性一词意味着具有多种形式。在编程中, 多态意味着相同的函数名称(但签名不同)被用于不同的类型。
内置多态函数示例:
# Python program to demonstrate in-built poly-
# morphic functions# len() being used for a string
print ( len ( "geeks" ))# len() being used for a list
print ( len ([ 10 , 20 , 30 ]))
输出如下:
53
使用的已定义多态函数的示例:
# A simple Python function to demonstrate
# Polymorphismdef add(x, y, z = 0 ):
return x + y + z# Driver code
print (add( 2 , 3 ))
print (add( 2 , 3 , 4 ))
输出如下:
59
类方法的多态性:
下面的代码显示python如何以相同的方式使用两种不同的类类型。我们创建一个for循环, 该循环遍历对象的元组。然后调用方法而不必担心每个对象是哪种类类型。我们假设这些方法实际上存在于每个类中。
class India():
def capital( self ):
print ( "New Delhi is the capital of India." )def language( self ):
print ( "Hindi is the most widely spoken language of India." )def type ( self ):
print ( "India is a developing country." )class USA():
def capital( self ):
print ( "Washington, D.C. is the capital of USA." )def language( self ):
print ( "English is the primary language of USA." )def type ( self ):
print ( "USA is a developed country." )obj_ind = India()
obj_usa = USA()
for country in (obj_ind, obj_usa):
country.capital()
country.language()
country. type ()
输出如下:
New Delhi is the capital of India.Hindi is the most widely spoken language of India.India is a developing country.Washington, D.C. is the capital of USA.English is the primary language of USA.USA is a developed country.
具有继承的多态性:
在Python中, 通过Polymorphism, 我们可以在子类中定义与父类中的方法同名的方法。在继承中, 子类从父类继承方法。但是, 可以修改从父类继承的子类中的方法。在从父类继承的方法不太适合子类的情况下, 这特别有用。在这种情况下, 我们将在子类中重新实现该方法。在子类中重新实现方法的过程称为
方法覆盖
.
class Bird:
def intro( self ):
print ( "There are many types of birds." )def flight( self ):
print ( "Most of the birds can fly but some cannot." )class sparrow(Bird):
def flight( self ):
print ( "Sparrows can fly." )class ostrich(Bird):
def flight( self ):
print ( "Ostriches cannot fly." )obj_bird = Bird()
obj_spr = sparrow()
obj_ost = ostrich()obj_bird.intro()
obj_bird.flight()obj_spr.intro()
obj_spr.flight()obj_ost.intro()
obj_ost.flight()
输出如下:
There are many types of birds.Most of the birds can fly but some cannot.There are many types of birds.Sparrows can fly.There are many types of birds.Ostriches cannot fly.
具有函数和对象的多态:
也可以创建一个可以接受任何对象的函数, 从而实现多态。在此示例中, 我们创建一个名为" func()"的函数, 该函数将使用一个我们称为" obj"的对象。尽管我们使用的是" obj"名称, 但是任何实例化的对象都可以在此函数中调用。接下来, 让函数使用我们传递给它的" obj"对象做些事情。在这种情况下, 让我们调用三种方法, 即capital(), language()和type(), 它们分别在"印度"和"美国"两个类别中定义。接下来, 让我们创建"印度"和"美国"类的实例化(如果我们还没有的话)。有了这些, 我们可以使用相同的func()函数调用它们的动作:
def func(obj):
obj.capital()
obj.language()
obj. type ()obj_ind = India()
obj_usa = USA()func(obj_ind)
func(obj_usa)
代码:
通过函数实现多态
class India():
def capital( self ):
print ( "New Delhi is the capital of India." )def language( self ):
print ( "Hindi is the most widely spoken language of India." )def type ( self ):
print ( "India is a developing country." )class USA():
def capital( self ):
print ( "Washington, D.C. is the capital of USA." )def language( self ):
print ( "English is the primary language of USA." )def type ( self ):
print ( "USA is a developed country." )def func(obj):
obj.capital()
obj.language()
obj. type ()obj_ind = India()
obj_usa = USA()func(obj_ind)
func(obj_usa)
输出如下:
New Delhi is the capital of India.Hindi is the most widely spoken language of India.India is a developing country.Washington, D.C. is the capital of USA.English is the primary language of USA.USA is a developed country.
注意怪胎!巩固你的基础Python编程基础课程和学习基础知识。
【Python中的多态性用法指南】首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。
推荐阅读
- Linux中的tty命令和示例
- Scala多态性介绍和用法指南
- Linux中的ps命令示例和指南
- CSS按钮样式介绍和代码示例
- 如何使用JavaScript将Blob转换为base64编码()
- Python中的numpy.floor_divide()详细介绍
- C++中具有用户定义大小的2D矢量vector
- 公司的ER图详细介绍
- Python MySQL –插入操作详解