python面向对象

面向对象三大主要特性:继承,封装,多态

封装:现实世界的事物在类中描述为属性和方法

私有成员

类中提供了私有成员的形式来支持

私有成员变量:以两个下划线__开头

私有成员方法:以两个下划线__开头

class Phone:
    __current_voltage=1

    def __keep_single_core(self):
        print("让CPU以单核模式运行")
    def phone_by_5G(self):
        if self.__current_voltage>=1:
            print('5g通话已开启')
        else:
            self.__keep_single_core()
            print('电量不足,无法使用5g通话,转向单核模式运行')
phone=Phone()
#没办法直接调用私有成员变量和方法,但可以建立公有方法,在公有方法内调用私有变量和方法1
phone.phone_by_5G()
#没办法直接调用私有成员变量和方法,但可以建立公有方法,在公有方法内调用私有变量和方法

私有的只能自己在内部使用,到了外部的类对象那里就不能使用

私有成员的意义:在类中提供仅供内部使用的属性和方法,而不对外开放(类对象无法使用)

继承

语法:

class 类名(父类名):

        类内容体

class Phone:
    id="1331234"
    def phone_by_4G(self):
        print('4g通话')
class Phone2024(Phone):
    face_id='3132425'
    def phone_by_5G(self):
        print('使用新功能,5g通话')

phone1=Phone2024()#老是忘记加括号!!!
phone1.phone_by_4G()
phone1.phone_by_5G()

一个子类继承多个父类

class Phone:
    name=None
    producer=None

    def call_by_4g(self):
        print("使用4g")
class Phone2023(Phone):
    face_id=None
    def call_by_5g(self):
        print("使用5g")
p1=Phone2023()#老是忘写括号!!!!!!!
p1.call_by_5g()
p1.call_by_4g()
class NFCReader:
    nfc_type="第五代"
    def read_card(self):
        print("NFC读卡")
    def write_card(self):
        print("NFC写卡")
class RemoteControl:
    re_type="第四代"
    def control(self):
        print("红外遥控开启了")
class MyPhone(Phone,NFCReader,RemoteControl):
    pass
phone=MyPhone()
phone.call_by_4g()
phone.control()
phone.read_card()
phone.write_card()

注:多继承,同名的方法或属性按从左到右的顺序来

pass:是占位语句,用来确保函数方法或类定义的完整性,表示无内容,空的意思

复写父类成员和调用父类成员

复写:对父类的成员属性或成员方法进行重新定义

1.直接覆盖父类成员

class Phone:
    name="redmi"
    def call_by_5g(self):
        print('5g网络')
class Phone2024(Phone):
    name="Redredmi"
    def call_by_5g(self):
        print('6g网络')
        print('我又更新了')
phone1=Phone2024()
print(phone1.name)
phone1.call_by_5g()

2.需要被复写的父类的成员

(1)调用父类成员

使用成员变量:父类名.成员变量

使用成员方法:父类名.成员方法(self)#记得写self

(2)使用super()调用父类成员

使用成员变量:super().成员变量

使用成员方法:super().成员方法

class Phone:
    name=None
    producer="ITCAST"

    def call_by_4g(self):
        print("使用4g")
#子类
class Phone2023(Phone):
    face_id=None
    producer="ITHEIMA"


    def call_by_5g(self):
        print("使用5g哦")
        #方法1
        print(Phone.producer)
        Phone.call_by_4g(self)  # 记得写self
        #方法2
        print(super().producer)
        super().call_by_4g()
        # #必须写在方法里面
p1=Phone2023()#老是忘写括号!!!!!!!
p1.call_by_5g()

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值