从0.1开始学Python——[22]

本文介绍了Python中面向对象的多态特性,通过实例展示了如何实现多态,并讨论了类型检查对多态的影响。多态允许函数接受不同类但具有相同属性的对象,增强了代码的灵活性和可扩展性。封装和继承作为面向对象的另外两大特征,分别保障了对象数据的安全性和代码的可扩展性。
摘要由CSDN通过智能技术生成

从0.1开始学Python——[22]

面向对象的三大特征,之前的封装、继承,加上现在将要学习的多态。

多态

字面意思上讲就是多种形态。

class Slj():
    def __init__(self,who):
        self._who = who

    @property
    def who(self):
        return self._who

    @who.setter
    def who(self,who):
        self._who = who


class Wthg():
    def __init__(self,who):
        self._who = who

    @property
    def who(self):
        return self._who

    @who.setter
    def who(self,who):
        self._who = who

s = Slj('水龙敬')
w = Wthg('武田弘光')

def yuanzuo(a):
    print('原作 %s'%a.who)

yuanzuo(s)
yuanzuo(w)
原作 水龙敬
原作 武田弘光

从上面的代码可以看到,s、w两个对象,分不属于不同的类,但是相同点是二者都有相同的属性名的属性,也就是说yuanzuo(a)这个函数,不会管输入的对象是不是一个类,只要有同一种属性就行。也就是说,只要有这个who属性,什么类的对象都能调用这个函数,这就是多态的表现形式。
如果加一个类型检查,比如加一个条件为isinstance(对象形参,某个类)判断语句,这样就会违反多态。这种函数只会适用于一种类型的对象,函数适应性自然会稍微差一些。所以开发过程中很少用,不建议使用。

def yuanzuo(a):
    if isinstance(a,Slj):
        print('原作 %s'%a.who)
    else:
        print('不干')

yuanzuo(s)
yuanzuo(w)
原作 水龙敬
不干

上面这叫就叫违反多态。
综述,面向对象的三大特征的作用可以概括为:
封装——保证对象数据安全
继承——保证对象可扩展性
多态——保证对象灵活性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值