Python基础(二十七、继承复写、注解)

一、继承

1.复写

子类继承父类的成员属性和成员方法后,如果对其“不满意”,那么可以进行复写。
即:在子类中重新定义同名的属性或方法即可。

2.调用父类同名成员

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

  • 方式1:
    调用父类成员
    • 使用成员变量:父类名.成员变量
    • 使用成员方法:父类名.成员方法(self)
  • 方式2:
    使用super()调用父类成员
    • 使用成员变量: super().成员变量
    • 使用成员方法: super().成员方法()

3.代码示例

import部分见Python基础(二十六、封装、继承)

import siyou
from sound import clock


class PhoneUp(siyou.Phone, clock.Clock):
    def __init__(self, IMEI, sound, id, price, face_id):
        super().__init__(IMEI, sound)
        super().__init__(id, price)
        # 面部识别
        self.face_id = face_id

    # 复写
    def ca11_by_5g(self):
        if self.face_id != None:
            print("已为您开启5g,自适应环境调整降噪模式")
        else:
            # 使用父类的成员方法
            super().ca11_by_5g()

    def face(self):
        if self.face_id != None:
            print("面部识别设置成功")

if __name__ == "__main__":
    phone = PhoneUp(1102, 2, 1111,122,None)
    phone = PhoneUp(1102, 2, 1111,122,11)
    phone.ca11_by_5g()
    phone.face()
    phone.ring()

二、注解

1.变量注解

变量注解用于指定变量的类型信息,通常位于变量名后面,使用冒号分隔。例如:

x: int = 42
y = 42 # type: int

这条语句表示将整数值42赋给变量x,并且将x标注为int类型。

变量注解的作用:

  • 提高代码可读性和可维护性,使程序员更容易理解变量的含义和类型信息。
  • 帮助IDE等工具进行类型检查和代码补全,提高开发效率和代码质量。
  • 在一些静态类型检查工具中可以进行类型检查。

2.函数注解

函数注解用于指定函数参数和返回值的类型信息,通常位于函数定义的括号和冒号之间,或者是在箭头后面指定返回类型。例如:

def add(x: int, y: int) -> int:
    return x + y
def add(x, y):
    # type: (int, int) -> int
    return x + y

这个函数的参数x和y被标注为int类型,返回值被标注为int类型。

函数注解的作用:

  • 提高代码可读性和可维护性,使程序员更容易理解函数的参数和返回值的类型信息。
  • 帮助IDE等工具进行类型检查和代码补全,提高开发效率和代码质量。
  • 在一些静态类型检查工具中可以进行类型检查。

需要注意的是,Python的类型注解只是一种约定,不会在程序执行时强制执行类型检查。因此,在使用类型注解时,仍然需要编写相应的代码来确保变量和函数的正确类型使用。

3.Union联合注解

在Python中,使用Union进行联合注解可以指定一个变量或函数参数可以接受多种类型的值。Union是typing模块中的一个工具类,用于创建复合类型。

语法如下:

from typing import Union

var: Union[type1, type2, ...]

其中,type1、type2等表示可以接受的类型。

示例:

from typing import Union

def add(a: Union[int, float], b: Union[int, float]) -> Union[int, float]:
    return a + b

result1 = add(5, 3)
print(result1)  # 输出:8

result2 = add(2.5, 1.5)
print(result2)  # 输出:4.0

在上面的例子中,add函数的参数a和b都被注解为Union[int, float],表示可以接受整数或浮点数类型的值。返回值也被注解为Union[int, float],表示返回的结果可以是整数或浮点数类型。

注意事项:

  • Union注解中的类型可以是任何有效的类型,包括基本类型、自定义类型和其他复合类型(如List, Tuple等)。
  • Union注解中的类型顺序并没有特定要求,例如Union[int, float]和Union[float, int]是等价的。
  • 当使用Union注解时,变量或函数参数可以接受注解中列出的所有类型的值。例如,在上面的示例中,add函数可以接受整数或浮点数类型的参数,并返回相应的结果。
  • 在类型检查工具(如mypy)中,使用Union注解可以进行类型检查,确保传入的值和返回的结果符合注解中指定的类型。
  • 尽管Union提供了灵活的类型组合,但过多的类型组合可能会导致代码可读性降低。因此,在使用Union注解时,建议尽量保持类型组合的简洁和清晰。
  • 当需要表示可选类型(即可以为指定类型或None)时,可以使用Optional类型,它实际上是Union[type, None]的简写形式。
  • 37
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈年小趴菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值