python的类继承与重构示例讲解

python的类继承与重构

为了避免重写一些功能函数,新类只需要继承基类就能够实现对基类函数的调用而不需要在新类上进行重复定义。并且也可以实现在新类上对基类的函数进行功能改写,即重构。

class A():
    def __init__(self, a, b):
        self.a = a 
        self.b = b
     
    def sum(self,a,b):
        c= a+b
        e= self.multiply(a,b)
        return e
    
    def multiply(self, a,b):
        e = a*b
        return e

class B(A):
    def __init__(self, a,b,d):
        self.d = d
        super(B, self).__init__(a,b)

    def multiply(self, a,b):
        ee= a*b*b
        return ee

这个示例中,class B(A): #B类继承了A类,并且需要在B类中对A类的参数进行初始化super(B, self).__init__(a,b)

在B类中对父类的A的multiply()函数进行了重构。由于B类继承了A类,所以sum()属性也属于B类,即可以使用B.sum(a,b)进行调用。

调用范例:

a=2
b=2
d=3
bb=B(a,b,d)
cc=A(a,b)
sumb=bb.sum(a,b)
suma=cc.sum(a,b)
print("suma:",suma)
print("sumb:",sumb)

运行结果:

suma:4
sumb:8

这里面值得说的是sum函数里面调用了multiply函数,但是A类和B类都有multiply函数定义,所以sum函数调用了其中的哪个?
如果你调用的是A类的sum函数,就调用了A类里的multiply函数,如果你调用的是B类的sum函数(继承过来的),就调用了B类的multiply函数。从运行结果上也可以看出来。

更直观的做法是将代码复制到本地,单步运行一下便可知道答案。

“实践出真知!"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值