继承
类可以继承,继承是指 在创建类(子类)的时候 可以指定继承一个已存在的类(父类),这样子类拥有父类的所有方法和属性
例子:
父类中的初始化方法需要在子类实现,可以使用super()调用父类 中的初始化方法
继承 : 继承那个类 就写那个类
继承之后 子类 拥有父类中的属性 和 方法
class Tester(Human):
def __init__(self, name, age, sex,job):
super().__init__(name, age, sex)
self.job = job
def do_test(self):
print(self.name+'在做测试')
self.sleep()`
根据子类创建对象,不管父类还是子类的方法都可以调用
tester = Tester('咸鱼', 25, '男','资深测试工程师')
tester.do_test()
tester.eat()
tester.sleep()`
多继承
含义: 子类 可以继承多个父类
语法:
需要注意括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索,以左边类中的最早出现的方法为准
class 子类名(父类1, 父类2, 父类3...):
...
例子:
新建一个 Dev类
再新建一个SDET类 继承 Tester类 和 Dev类
class Dev:
def __init__(self,name, language):
self.language = language
self.name = name
def do_dev(self):
print(f'{self.name}擅长使用{self.language}语言写程序')
# SDET(Software Development Engineer in Test)也被称为测试开发工程师
class SDET(Tester,Dev):
def __init__(self,name, age, sex,job, language):
Tester.__init__(self,name, age, sex,job)
Dev.__init__(self,name,language)
def do_work(self):
print(f'{self.name}使用{self.language}编写接口测试脚本')`
新建SDET对象并调用
多继承的子类对象 可以任意调用父类中方法及属性
sdet = SDET('大明', 28, '男','测试开发','python')
sdet.do_dev()
sdet.eat()
sdet.do_work()
sdet.do_test()
结果:
大明擅长使用python语言写程序
大明在吃工作餐
大明使用python编写接口测试脚本
大明在做测试
大明在睡觉
练习:
新建Tesla类,继承Car类,
添加 color,price属性,
添加showAll方法:先调用父类中的show方法,再打印 color,price属性的值
新建Tesla 类 的 对象 modelx , 调用 showAll方法
#创建一个Car类,有三个属性name,no,speed, 编写三个方法:
class Car(object):
def __init__(self,name,no,speed):
self.name =name
self.no =no
self.__speed =speed
# show():输出每一个属性的值
def show(self):
print(self.name,self.no,self.__speed)
# start(): 启动,speed=100,输出车名,启动了
def start(self):
self.speed=100
print("%s启动了"%(self.name))
#run(): 行驶,输出车名和当前速度
def run(self):
print("%s行驶了,当前速度%skm/h" % (self.name,self.speed))
#stop(): 刹车,speed=0,输出车名,刹车当前速度
def stop(self):
self.speed=0
print("%s刹车了,当前速度%skm/h" % (self.name,self.speed))
#创建一个car对象,依次 调用show(),start(),run(),stop()方法
def __maintenance(self):
print("%s:已更换机油和空气滤芯"%(self.name))
def lube(self):
self.__maintenance()
print('油加满了')
class Tesla(Car):
def __init__(self, name, no, speed, color, price):
self.color = color
self.price = price
super().__init__(name, no, speed)
def showAll(self):
self.show() # 调用父类中的show方法
print('%s的颜色为%s,价格为%s' % (self.name, self.color, self.price))
def showAll(self):
self.show() # 调用父类中的show方法
print('%s的颜色为%s,价格为%s' % (self.name, self.color, self.price))
if __name__ == '__main__':
# 新建Tesla 类 的 对象 modelx 并传参,包含继承类参数
modex = Tesla('jeep轿车', '沪A1111', 100, 'red', '20dollers')
modex.showAll() # 调用 showAll方法
modex.show() # 调用继承类Car的show方法

网友评论