首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python中对多态的支持和使用

Python中对多态的支持和使用

作者头像
用户7886150
修改2020-12-21 11:01:00
修改2020-12-21 11:01:00
1K0
举报
文章被收录于专栏:bit哲学院bit哲学院

参考链接: Python中的多态

1.Java中多态性的表现: 多态性,可以理解为一个事物的多种形态。同样python中也支持多态,但是是有限的的支持多态性,主要是因为python中变量的使用不用声明,所以不存在父类引用指向子类对象的多态体现,同时python不支持重载。在python中 多态的使用不如Java中那么明显,所以python中刻意谈到多态的意义不是特别大。 

Java中多态的体现:

①方法的重载(overload)和重写(overwrite)。

②对象的多态性(将子类的对象赋给父类的引用)——可以直接应用在抽象类和接口上

广义上:①方法的重载、重写 ②子类对象的多态性

狭义上:子类对象的多态性(在Java中,子类的对象可以替代父类的对象使用) 

2.多态性使用的前提:①类的继承关系 ②要有方法重写。python中的多态体现 

python这里的多态性是指具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同内容的函数。 

class gradapa(object):

    def __init__(self,money):

        self.money = money

    def p(self):

        print("this is gradapa")

class father(gradapa):

    def __init__(self,money,job):

        super().__init__(money)

        self.job = job

    def p(self):

        print("this is father,我重写了父类的方法")

class mother(gradapa):

    def __init__(self, money, job):

        super().__init__(money)

        self.job = job

    def p(self):

         print("this is mother,我重写了父类的方法")

         return 100

#定义一个函数,函数调用类中的p()方法

def fc(obj):  #其实如果是fc(gradpa obj)类型定义,然后传入子类的对象才明显,但是python不用声明变量

    obj.p()

mother1 = mother(1000,"老师")

father1 = father(2000,"工人")

#这里的多态性体现是向同一个函数,传递不同参数后,可以实现不同功能.

fc(mother1)

fc(father1)

print(fc(mother1))

======================================================================================

this is mother,我重写了父类的方法

this is father,我重写了父类的方法

100

3.关于 super 

在 Python 中 super 是一个 特殊的类super() 就是使用 super 类创建出来的对象最常 使用的场景就是在 重写父类方法时,调用 在父类中封装的方法实现

调用父类方法的另外一种方式(知道) 

 在 Python 2.x 时,如果需要调用父类的方法,还可以使用以下方式: 

父类名.方法(self)

这种方式,目前在 Python 3.x 还支持这种方式这种方法 不推荐使用,因为一旦 父类发生变化,方法调用位置的 类名 同样需要修改

提示 

在开发时,父类名 和 super() 两种方式不要混用如果使用 当前子类名 调用方法,会形成递归调用,出现死循环

统一声明:关于原创博客内容,可能会有部分内容参考自互联网,如有原创链接会声明引用;如找不到原创链接,在此声明如有侵权请联系删除哈。关于转载博客,如有原创链接会声明;如找不到原创链接,在此声明如有侵权请联系删除哈。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档