类与对象-继承D14

本文介绍了Python中类和对象的基础概念,如类的定义、对象的初始化、属性和方法的区别,重点讲解了继承、重写以及如何使用super()函数进行方法的超继承。通过实例演示了SmartPhone和Iphone类的创建,展示了继承和重写在实际编程中的应用。
摘要由CSDN通过智能技术生成

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))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值