Python学习笔记-封装、继承

面向对象包含三大主要特性:

  • 封装
  • 继承
  • 多态
    在这里插入图片描述

封装

私有对象,方法

我们在成员属性和成员方法中,定义了私有属性和方法后,我们实例化一个类对象,该类对象无法调用私有属性和方法,但这些私有对象和方法可以被其他的成员使用

class Phone:
    __current_vol = 0.5

    def __singel_core(self):
        print('单核运行')

    def call_by_5g(self):
        if self.__current_vol >= 1:
            print('5g通话开启')
        else:
            print('电量不足,启用单核模式')
            self.__singel_core()


phone = Phone()
phone.call_by_5g()
=============================================
>>> 电量不足,启用单核模式
>>> 单核运行

案例:
在这里插入图片描述

class Phone:
    __is_5g_enable = False

    def __check_5g(self):
        if self.__is_5g_enable:
            print('5g开启。')
        else:
            print('5g关闭,使用4g网络。')

    def call_by_5g(self):
        self.__check_5g()
        print('正在通话中...')


phone = Phone()
phone.call_by_5g()
================================================
>>> 5g关闭,使用4g网络。
>>> 正在通话中...

继承

单继承语法:
在这里插入图片描述

class Phone:
    IMEI = None
    producer = 'HM'

    def call_by_4g(self):
        print('4g通话')


class Phone2022(Phone):
    face_id = '10001'

    def call_by_5g(self):
        print('新功能')

phone = Phone2022()
print(phone.producer)
phone.call_by_5g()
phone.call_by_4g()
========================================
>>> HM
>>> 新功能
>>> 4g通话

多继承语法:
在这里插入图片描述

class Phone:
    IMEI = None
    producer = 'HM'

    def call_by_4g(self):
        print('4g通话')


class NFCReader:
    nfc_type = '第五代'
    producer = 'HM'

    def read_card(self):
        print('NFC读卡')

    def write_card(self):
        print('NFC写卡')


class RemoteControl:
    rc_type = '红外遥控'

    def control(self):
        print('红外遥控已开启')


class MyPhone(Phone, RemoteControl, NFCReader):
    pass


phone = MyPhone()
phone.control()
phone.read_card()
phone.write_card()
phone.call_by_4g()
print(phone.nfc_type)

总结:

  • 子类构建的类对象,可以有自己的成员变量和成员方法
  • 子类构建的类对象,可以使用父类的成员变量和成员方法
  • 单继承:一个类继承另一个类
  • 多继承:一个类继承多个类,按照顺序从左到右依次继承,多继承中,如果父类有同名的方法或属性,先继承的优先级高于后继承
  • pass关键字是一个占位语句,用来保证函数(方法)的完整性,表示无内容。

复写

子类继承父类的成员方法和成员属性后,如果对其“不满意”,可以对其进行复写,即在子类中重新定义同名的属性或方法。
在这里插入图片描述

class Phone:
    IMEI = None
    producer = 'HM'

    def call_by_4g(self):
        print('4g通话')


class MyPhone(Phone):
    producer = 'xx'

    def call_by_4g(self):
        print('更新4g')


phone = MyPhone()
phone.call_by_4g()
print(phone.producer)
=============================================

>>> 更新4g
>>> xx

一旦复写父类成员,那么类对象调用成员的时候,就会调用复写后的新成员,如果这时需要调用被复写的父类成员(未被复写的),需要特殊的调用方式:

  • 方式1:
    使用成员变量:父类名.成员变量
    使用成员方法:父类名.成员方法(self)
  • 方式2:
    使用成员变量:super().成员变量
    使用成员方法:super().成员方法()
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值