一、继承
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]的简写形式。