python学习笔记5

# 设计一个类(类似生活中:设计一张登记表)
class Student:
    name = None    # 记录学生姓名
    gender = None    # 记录学生性别
    nationality = None  # 记录学生国籍
    native_place = None  # 记录学生籍贯
    age = None  # 记录学生年龄
# 创建一个对象(类比生活中:打印一张登记表)
# 创建类对象的语法  对象 = 类名称()
stu_1 = Student()
# 对象属性赋值(填写表单)
stu_1.name = "小明"
stu_1.gender = "男"
stu_1.nationality = "中国"
stu_1.native_place = "河北省"
stu_1.age = 31

# 获取对象中记录的信息
print(stu_1.age)
# 类的行为,相当于在类里面写一个函数,称为成员方法

在类的成员方法里面引用参数需要用self,例如self.name

class Student:
    name = None
    # self在成员方法中出现,不用传参
    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("哈哈哈")
# 类的构造方法  __init__()方法,称之为构造方法,用于在创建对象时初始化对象的状态
class Student:
  
    def __init__(self, name, age, tel):
        self.name = name
        self.age = age
        self.tel = tel
        print("Student创建了一个类对象")

stu = Student("小明", 22, "12345677890")
print(stu.name)

其他成员方法

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("小红", 23)
stu2 = Student("小明", 22)
print(stu1 == stu2)
print(str(stu2))
# 面向对象封装  将现实世界中的事物映射到类中的属性和行为

# 私有成员变量:变量名以__开头 私有成员方法:方法名以__开头 # 私有成员变量和方法不可以外部调用,可以类内部调用

class Phone:
    __is_5g_enable = False
    # 私有成员方法,判断__is_5g_enable的值
    def __check_5g(self):
        if self.__is_5g_enable == True:
            print("5g开启")
        else:
            print("5g关闭,使用4g网络")
    # 公开成员方法
    def call_by_5g(self):
        self.__check_5g()
        print("正在通话中")

Phone1 = Phone()
Phone1.call_by_5g()
# 面向对象继承
# 单继承   class 类名(父类名)    子类继承父类的属性和方法,并且还可以添加或重写它们。
class Phone:
    IMEI = None   # 序列号
    producer = "HM"  # 厂商

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

class Phone2022(Phone):  # 继承Phone中的属性和方法
    face_id = "10001"   # 面部识别ID

    def call_by_5g(self):
        print("2022新功能:5g通话")
# 多继承  class 类名(父类1, 父类2, 父类3)
class Phone:
    IMEI = None   # 序列号
    producer = "HM"  # 厂商

    def call_by_4g(self):
        print("4g通话")
class NFCreader:
    nfc_typr = "第五代"
    producer = "HM"  # 厂商

    def read_card(self):
        print("NFC读卡")
    def read_card(self):
        print("NFC写卡")

class RemoteControl:
    rc_type = "红外遥控"

    def control(self):
        print("红外遥控开启了")

# 继承上面三个类的属性和方法
class Myphone(Phone, NFCreader, RemoteControl):
    pass  # 补全内容作用
# 面向对象复写
class Phone:
    IMEI = None   # 序列号
    producer = "HM"  # 厂商

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

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

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

class Myphone2(Phone2022):
    producer = "IT"   # 复写父类的成员属性

    def call_by_5g(self):
        print("开启CPU单核模式,确保通话时省电")

        # 子类中调用父类成员方法
        # 方式1
        # print(f"父类的厂商是:{Phone.producer}")
        # Phone2022.call_by_5g(self)
        # 方式2
        print(f"父类的厂商是:{super().producer}")
        super().call_by_5g()

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

注解

# 对形参进行类型注解
def add(x: int, y: int):
    return x + y
# 返回值注解
def func(data: list) -> list:  # -> 注解返回值类型
    return data
# Union类型注解  可以定义联合类型注解  使用typing模块
from typing import Union
my_list: list[Union[int, str]] = [1, 2, "IT", "HM"]
# 注解说明函数传入参数可以是int类型,也可以是str类型,返回值可以是int类型,也可以是str类型
# Union[int, str]表示func函数的参数data可以是int(整数)或str(字符串)类型,同时函# 数的返回值也可以是int或str。

def func(data: Union[int, str]) -> Union[int, str]:
    pass   # 避免函数内容是空的,补全内容作用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值