软件测试-DAY45-Python11
(接DAY44)
十、类
类的继承
如果一种语言不支持继承,类就没有什么意义。
继承是面向对象的主要特征之一,通过继承可以实现代码的复用。子类(派生类 DerivedClassName)会继承父类(基类 BaseClassName)的属性和方法(变量和函数)。所有的类都有一个父类object
格式:
class DerivedClassName(BaseClassName):
<statement-1>
.
.
.
<statement-N>
BaseClassName(实例中的基类名)必须与派生类定义在一个作用域内。除了类,还可以用表达式,基类定义在另一个模块中时这一点非常有用:
class DerivedClassName(modname.BaseClassName):
Python同样有限的支持多继承形式。多继承的类定义形如下例:
class DerivedClassName(Base1, Base2, Base3):
<statement-1>
.
.
.
<statement-N>
需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索(即方法在子类中未找到时,从左到右查找父类中是否包含方法。)
方法重写
如果父类方法的功能不能满足需求,可以在子类重写父类的方法,示例如下:
class Parent: # 定义父类
def myMethod(self):
print ('调用父类方法')
class Child(Parent): # 定义子类
def myMethod(self):
print ('调用子类方法')
c = Child() # 子类实例
c.myMethod() # 子类调用重写方法
super(Child,c).myMethod() #用子类对象调用父类已被覆盖的方法
super()
函数是用于调用父类(超类)的一个方法。
执行以上程序输出结果为:
调用子类方法
调用父类方法
运算符重载
Python支持运算符重载,可以对类的专有方法进行重载,实录如下:
class Vector:
def __init__(self, a, b):
self.a = a
self.b = b
def __str__(self):
return 'Vector (%d, %d)' % (self.a, self.b)
def __add__(self,other):
return Vector(self.a + other.a, self.b + other.b)
v1 = Vector(2,10)
v2 = Vector(5,-2)
print (v1 + v2)
以上代码执行结果如下所示:
Vector(7,8)
版权属于:qqAys
本文链接:https://qqays.xyz/archives/softwaretest-day45-python-11.html
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
您可以自由的转载和修改,但请务必注明文章来源并且不可用于商业目的。