• Python面向对象


    成员方法

    1. """
    2. 面向对象类中的成员方法定义和使用
    3. self表示类对象本身的意思
    4. 只有通过self,成员方法才能访问类的成员变量 (类的属性)
    5. """
    6. # 定义一个带有成员方法的类
    7. class Student:
    8. name = None # 学生的姓名
    9. def say_hi(self):
    10. print(f"大家好呀,我是{self.name},欢迎大家多多关照")
    11. def say_hi2(self, msg):
    12. print(f"大家好,我是:{self.name}{msg}")
    13. stu = Student()
    14. stu.name = "周杰轮"
    15. stu.say_hi() # 大家好呀,我是周杰轮,欢迎大家多多关照
    16. stu.say_hi2("哎哟不错哟") # 大家好,我是:周杰轮,哎哟不错哟
    17. stu2 = Student()
    18. stu2.name = "林俊节"
    19. stu2.say_hi2("小伙子我看好你") # 大家好,我是:林俊节,小伙子我看好你

    类和对象(面向对象的编程思想)

    1. # 设计一个闹钟类
    2. class Clock:
    3. id = None # 序列化
    4. price = None # 价格
    5. def ring(self):
    6. import winsound
    7. winsound.Beep(2000, 3000) # 前一个是频率,后一个是持续时间
    8. # 构建2个闹钟对象并让其工作
    9. clock1 = Clock()
    10. clock1.id = "003032"
    11. clock1.price = 19.99
    12. print(f"闹钟ID:{clock1.id},价格:{clock1.price}")
    13. # clock1.ring()
    14. clock2 = Clock()
    15. clock2.id = "003033"
    16. clock2.price = 21.99
    17. print(f"闹钟ID:{clock2.id},价格:{clock2.price}")
    18. clock2.ring()

    类的构造方法

    使用构造方法对成员变量进行赋值

    1. class Student:
    2. def __init__(self, name, age, tel):
    3. # 这个方法会自动执行,将传入参数自动传递给__init__方法使用
    4. self.name = name
    5. self.age = age
    6. self.tel = tel
    7. print("Student类创建了一个类对象")
    8. stu = Student("周杰轮", 31, "18500006666")
    9. # 首先会输出 Student类创建了一个类对象
    10. print(stu.name)
    11. print(stu.age)
    12. print(stu.tel)

    Python内置的各类魔术方法

    1. class Student:
    2. def __init__(self, name, age):
    3. self.name = name # 学生姓名
    4. self.age = age # 学生年龄
    5. # __str__魔术方法 控制类对象转换为字符串的行为,如果没这个方法,会输出内存地址,所以需要该内置方法转为字符串
    6. def __str__(self):
    7. return f"Student类对象,name:{self.name}, age:{self.age}"
    8. # __lt__魔术方法 直接对两个对象进行比较是不可以的
    9. def __lt__(self, other):
    10. return self.age < other.age
    11. # __le__魔术方法
    12. def __le__(self, other):
    13. return self.age <= other.age
    14. # __eq__魔术方法
    15. def __eq__(self, other):
    16. return self.age == other.age
    17. stu1 = Student("周杰轮", 31)
    18. print(stu1)
    19. print(str(stu1))
    20. stu2 = Student("林俊节", 36)
    21. print(stu1 < stu2) # True
    22. print(stu1 == stu2) # 如果没有__eq__魔术方法定义,则默认比较内存地址

    封装(将现实世界事物在类中描述为属性和方法)

    1. class Phone:
    2. __current_voltage = 0.5 # 当前手机运行电压
    3. # 定义私有成员变量和私有成员方法,均可以__开头
    4. # 私有方法无法直接被类对象使用,但是可以被其他方法调用
    5. # 私有变量无法通过构建对象再次赋值,也无法获取值
    6. def __keep_single_core(self):
    7. print("让CPU以单核模式运行")
    8. def call_by_5g(self):
    9. if self.__current_voltage >= 1:
    10. print("5g通话已开启")
    11. else:
    12. self.__keep_single_core()
    13. print("电量不足,无法使用5g通话,并已设置为单核运行进行省电。")
    14. phone = Phone()
    15. phone.call_by_5g()

    继承

    单继承

    1. class Phone:
    2. IMEI = None # 序列号
    3. producer = "ITCAST" # 厂商
    4. def call_by_4g(self):
    5. print("4g通话")
    6. class Phone2022(Phone):
    7. face_id = "10001" # 面部识别ID
    8. def call_by_5g(self):
    9. print("2022年新功能:5g通话")
    10. phone = Phone2022()
    11. print(phone.producer) # ITCAST
    12. phone.call_by_4g() # 4g通话
    13. phone.call_by_5g() # 2022年新功能:5g通话

    多继承

    1. class NFCReader:
    2. nfc_type = "第五代"
    3. producer = "HM"
    4. def read_card(self):
    5. print("NFC读卡")
    6. def write_card(self):
    7. print("NFC写卡")
    8. class RemoteControl:
    9. rc_type = "红外遥控"
    10. def control(self):
    11. print("红外遥控开启了")
    12. class MyPhone(Phone, NFCReader, RemoteControl):
    13. # 如果父类中有同名方法或属性,先继承的优先级高于后继承
    14. pass # 表示无内容,空的意思
    15. phone = MyPhone()
    16. phone.call_by_4g() # 4g通话
    17. phone.read_card()
    18. phone.write_card()
    19. phone.control()
    20. print(phone.producer) # ITCAST

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

    子类中,调用父类成员

    1. class Phone:
    2. IMEI = None # 序列号
    3. producer = "ITCAST" # 厂商
    4. def call_by_5g(self):
    5. print("使用5g网络进行通话")
    6. # 定义子类,复写父类成员
    7. class MyPhone(Phone):
    8. producer = "ITHEIMA" # 复写父类的成员属性
    9. def call_by_5g(self):
    10. print("开启CPU单核模式,确保通话的时候省电")
    11. # 方式1
    12. # print(f"父类的厂商是:{Phone.producer}")
    13. # Phone.call_by_5g(self)
    14. # 方式2
    15. print(f"父类的厂商是:{super().producer}")
    16. super().call_by_5g()
    17. print("关闭CPU单核模式,确保性能")
    18. phone = MyPhone()
    19. phone.call_by_5g()
    20. print(phone.producer)

  • 相关阅读:
    VUE 常用炫酷动画库(拿来即用系列)
    【机器学习-黑马程序员】人工智能、机器学习概述
    医院空调冷热源设计方案VR元宇宙模拟演练的独特之处
    生命周期详解
    腾讯云短信使用
    微信网页版能够使用(会顶掉微信app的登陆)
    泰勒公式理解
    Vue 使用props为路由组件传参『详解』
    记一次 .NET某道闸收费系统 内存溢出分析
    关于package和import
  • 原文地址:https://blog.csdn.net/qq_47896523/article/details/131615088