1)继承
2)重写
3)超继承super()
"""继承
父类 子类
继承的表示:
class 子类名(父类名):
pass
子类可以实现自己独有的方法;
子类可以覆盖父类的方法==》重写
super() 超继承:使用父类当中的方法
"""
附带代码:
class Phone:
"""手机"""
def __init__(self, number):
self.number = number
def call(self, to, recorded=False):
"""打电话"""
print("{}给{}打电话".format(self.number, to))
if recorded:
"""录音"""
print("{}正在录音".format(self.number))
class SmartPhone(Phone):
""""智能手机"""
def __init__(self, number, brand):
self.number = number
self.brand = brand
def watch_movie(self, name):
print("正在看电影{}".format(name))
class Iphone(SmartPhone):
# brand = "苹果"
# 重写
def __init__(self, number):
self.number = number
self.brand = "苹果"
def face_time(self):
"""录屏,直播"""
print("{}正在直播".format(self.number))
def call(self, to, recorded=False, face=False):
"""打电话既可以录音,也可以facetime"""
# print("{}给{}打电话。。".format(self.number, to))
# if recorded:
# self.record()
# 超继承 super()
super().call(to, recorded=False)
if face:
self.face_time()
normal_phone = Phone("1")
normal_phone.call("2", recorded=True)
smart_phone = SmartPhone("1", "安卓")
smart_phone.call("2", True)
smart_phone.watch_movie("红海行动")
iphone = Iphone("1")
iphone.call("2", True, True)
iphone.watch_movie("小偷家族")
作业:
1, 详细总结类和对象知识点,包括: 类的定义:类是指具有某一种特征的群体 对象的初始化: 表示方法:def __init__(self) 类属性:类都具有的特征,类里面的实例也都具有。 实例属性:实例具有的特征,不一定类都具有。 实例方法:类里的函数 类方法:类里的函数,@classmethod 静态方法:类里的函数,@staticmethod 继承:子类继承父类的方法,父类有的子类都有 重写:子类和父类有同样的方法,但不同 super 函数:子类和父类有同样的方法,子类有自己的模式,也继承了父类的模式,就用super函数 2, 定义一个类 Dog, 包含 2 个属性:名字和年龄。 定义一个方法 eat 吃东西。 定义一个类 TeddyDog, 继承 Dog 类, Teddy 在吃东西的时候还会望着你, 定义方法 watch_you. 定义一个类 BabyTeddyDog, 继承 TeddyDog, BabyTeddy 吃东西不仅会望着你,还会四处转悠, 定义方法 go_around
上期答案:
# 1、定义一个登录的测试用例类LoginTestCase 登录url地址为:"http://www.xxxx.com/login" 请求方法为:"post" 、 请自行分辨下列属性,应该定义为类属性还是实例属性 # - 属性:用例编号 url地址 请求参数 请求方法 预期结果 实际结果 """ class LoginTestCase: url = "http://www.xxxx.com/login" way = "post" def __init__(self, id_number, parameter, expect, actual): self.id_number = id_number self.parameter = parameter self.expect = expect self.actual = actual """ # 2. 简述类方法和实例方法,静态方法 """ 类方法:在类里面定义的函数,类和实例都可以调用。 形式: class GoodMan: @classmethod def basics(cls): pass 实例方法:在类里面定义的函数,只有实例可以调用。 形式: class GoodMan: def basics(self): pass 静态方法:在类里面定义的普通函数。 形式: class GoodMan: @staticmethod def basics(): pass """ # 3. 简述类属性和实例属性 """ 实例属性:实例具有的属性,只有实例可以调用。实例属性可以先天具有,写在__init__初始化函数里面;也可以后天学习具有,实例.属性 = 参数 类属性:类具有的属性,类和实例都可以调用。类属性可以先天具有,也可以后天学习具有。类.属性 = 参数 """ # 4. 定义一个手机类, # 1. 具有打电话和录音的方法 # 2. 打电话的时候可以录音,也可以不录音。(方法调用其他方法) """ class Phone: def __init__(self, number): self.number = number def call(self, to, record=False): print("{}给{}打电话".format(self.number, to)) if record: self.record() def record(self): print("{}可以录音".format(self.number)) """ # 5. 定义一个 ExcelHandler 类,所有方法不需要实际操作实现(不需要你真的去打开 excel, 不需要你真的把数据读出来。我们练习的是定义类的思维。) # 1. 初始化传入 文件路径。 # 2, 定义打开 excel 方法。 # 3. 定义获取 sheet 表格方法,根据 名称获取。 # 4. 定义读取 sheet 表格数据的方法。 (读取需要先打开,再获取表格。) # 5, 定义关闭文件方法。 class ExcelHandler: def __init__(self, file_path): """初始化""" self.file_path = file_path def open_file(self): """打开文件""" print("打开文件{}".format(self.file_path)) def get_sheet(self, name): """获取表格""" self.open_file() print("获取表格:{}".format(name)) def read_data(self, name): """读取数据""" self.get_sheet(name) print("读取数据") def close(self): print("关闭文件{}".format(self.file_path))