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函数。从运行结果上也可以看出来。
更直观的做法是将代码复制到本地,单步运行一下便可知道答案。
“实践出真知!"