【Python-面向对象】

■ 事物和类

在这里插入图片描述

■ 成员方法定义和使用

"""
演示面向对象类中的成员方法定义和使用
"""

# 定义一个带有成员方法的类
class Student:
    name = None     # 学生的姓名

    def say_hi(self):
        print(f"大家好呀,我是{self.name},欢迎大家多多关照")

    def say_hi2(self, msg):
        print(f"大家好,我是:{self.name}{msg}")

stu = Student()
stu.name = "周杰轮"
stu.say_hi2("哎哟不错哟")

stu2 = Student()
stu2.name = "林俊节"
stu2.say_hi2("小伙子我看好你")

■ self

类似C++ this 指针。

  • 表示类对象本身的意思
  • 只有通过self,成员方法才能访问类的成员变量
  • self出现在形参列表中,但是不占用参数位置,无需理会

■ 构造方法__init__()

"""
演示类的构造方法
"""
# 演示使用构造方法对成员变量进行赋值
# 构造方法的名称:__init__

class Student:
    def __init__(self, name, age ,tel):
        self.name = name
        self.age = age
        self.tel = tel
        print("Student类创建了一个类对象")

stu = Student("周杰轮", 31, "18500006666")
print(stu.name)
print(stu.age)
print(stu.tel)

■ 魔术方法

■ __str__字符串方法

在这里插入图片描述

■ __lt__小于、大于符号比较

在这里插入图片描述

■ __le__小于等于、大于等于符号比较

在这里插入图片描述

eq==符号比较

在这里插入图片描述

■ 综合演示

"""
演示Python内置的各类魔术方法
"""

class Student:
    def __init__(self, name, age):
        self.name = name        # 学生姓名
        self.age = age          # 学生年龄

    # __str__魔术方法
    def __str__(self):
        return f"Student类对象,name:{self.name}, age:{self.age}"

    # __lt__魔术方法
    def __lt__(self, other):
        return self.age < other.age

    # __le__魔术方法
    def __le__(self, other):
        return self.age <= other.age

    # __eq__魔术方法
    def __eq__(self, other):
        return self.age == other.age


stu1 = Student("周杰轮", 31)
stu2 = Student("林俊节", 36)
print(stu1 == stu2)

■ 封装

■ 私有成员和方法

私有成员变量:变量名以__开头 2个下划线
私有成员方法:方法名以__开头 2个下划线

"""
演示面向对象封装思想中私有成员的使用
"""
# 定义一个类,内含私有成员变量和私有成员方法
class Phone:
    __current_voltage = 0.5        # 当前手机运行电压

    def __keep_single_core(self):
        print("让CPU以单核模式运行")

    def call_by_5g(self):
        if self.__current_voltage >= 1:
            print("5g通话已开启")
        else:
            self.__keep_single_core()
            print("电量不足,无法使用5g通话,并已设置为单核运行进行省电。")

phone = Phone()
phone.call_by_5g()

■ 继承

■ 单继承

# 演示单继承
class Phone:
    IMEI = None     # 序列号
    producer = "ITCAST" # 厂商

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

class Phone2022(Phone):   # Phone2022继承Phone
    face_id = "10001"       # 面部识别ID

    def call_by_5g(self):
        print("2022年新功能:5g通话")

phone = Phone2022()
print(phone.producer)
phone.call_by_4g()
phone.call_by_5g()

■ 多继承

# 演示多继承
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, NFCReader, RemoteControl):  # 多继承
    pass

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

print(phone.producer)

■ 继承中对父类成员的复写和调用

"""
演示面向对象:继承中
对父类成员的复写和调用
"""
class Phone:
    IMEI = None             # 序列号
    producer = "ITCAST"     # 厂商
    def call_by_5g(self):
        print("使用5g网络进行通话")

# 定义子类,复写父类成员
class MyPhone(Phone):
    producer = "ITHEIMA"        # 复写父类的成员属性
    def call_by_5g(self):
        print("开启CPU单核模式,确保通话的时候省电")
        # 方式1
        # print(f"父类的厂商是:{Phone.producer}")
        # Phone.call_by_5g(self)
        # 方式2
        print(f"父类的厂商是:{super().producer}")
        super().call_by_5g()
        print("关闭CPU单核模式,确保性能")

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

# 在子类中,调用父类成员

■ super() 在子类中,调用父类成员

"""
演示面向对象:继承中
对父类成员的复写和调用
"""
class Phone:
    IMEI = None             # 序列号
    producer = "ITCAST"     # 厂商
    def call_by_5g(self):
        print("使用5g网络进行通话")

# 定义子类,复写父类成员
class MyPhone(Phone):
    producer = "ITHEIMA"        # 复写父类的成员属性
    def call_by_5g(self):
        print("开启CPU单核模式,确保通话的时候省电")
        # 方式1
        # print(f"父类的厂商是:{Phone.producer}")
        # Phone.call_by_5g(self)
        # 方式2
        print(f"父类的厂商是:{super().producer}")
        super().call_by_5g()
        print("关闭CPU单核模式,确保性能")

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

# 在子类中,调用父类成员

■ pass关键字

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

■ 多态

在这里插入图片描述在这里插入图片描述

■ 抽象类(接口)

作用: 用于做顶层设计,以便子类做具体实现。
相对于一个标准:只要继承了该抽象类就要实现抽象的抽象方法。
在这里插入图片描述
在这里插入图片描述

相关推荐

  1. python面向对象反射

    2024-04-22 13:38:05       42 阅读
  2. Python面向对象编程

    2024-04-22 13:38:05       43 阅读
  3. Python 面向对象(3)

    2024-04-22 13:38:05       54 阅读
  4. Python面向对象

    2024-04-22 13:38:05       30 阅读
  5. python面向对象

    2024-04-22 13:38:05       42 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-22 13:38:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-22 13:38:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-22 13:38:05       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-22 13:38:05       20 阅读

热门阅读

  1. Vue解构工作原理

    2024-04-22 13:38:05       12 阅读
  2. python项目环境安装实测

    2024-04-22 13:38:05       17 阅读
  3. 3、完成量

    2024-04-22 13:38:05       13 阅读
  4. 【JVM】JVM调优可配置参数及配置时机和原则

    2024-04-22 13:38:05       16 阅读
  5. JVM基础

    JVM基础

    2024-04-22 13:38:05      15 阅读
  6. Proxmox VE (PVE) 教学 (2) | 网络配置

    2024-04-22 13:38:05       15 阅读
  7. 高可用环境kafka消息未按顺序消费问题

    2024-04-22 13:38:05       11 阅读