class 类名称:
类属性
类行为
创建类对象的语法:
对象 = 类名称()

在类中定义成员方法和定义函数基本一致,但仍有细微区别:

可以看到,在方法定义的参数列表中,有一个:self关键字
self关键字是成员方法定义的时候,必须填写的。
在方法内部,想要访问类的成员变量,必须使用self
注意事项
self关键字,尽管在参数列表中,但是传参的时候可以忽略它。
构造方法
Python类可以使用:__init__()方法,称之为构造方法。
可以实现:
在创建类对象(构造类)的时候,会自动执行。
在创建类对象(构造类)的时候,将传入参数自动传递给__init__方法使用。

构建类时传入的参数会自动提供给__init__方法
构建类的时候__init__方法会自动执行

__str__ 字符串方法
当类对象需要被转换为字符串之时,会输出如上结果(内存地址),内存地址没有多大作用,我们可以通过__str__方法,控制类转换为字符串的行为。

__lt__ 小于符号比较方法
__le__ 小于等于比较符号方法魔术方法:__le__可用于:<=、>=两种比较运算符上。

__eq__比较运算符实现方法
__eq__方法,对象之间可以比较,但是是比较内存地址,也即是:不同对象==比较一定是False结果。__eq__方法,就可以按照自己的想法来决定2个对象是否相等了。
定义私有成员的方式非常简单,只需要:
即可完成私有成员的设置。

私有方法无法直接被类对象使用

私有变量无法赋值,也无法获取值



继承分为:单继承和多继承
使用如图语法,可以完成类的单继承。
继承表示:将从父类那里继承(复制)来成员变量和成员方法(不含私有)。

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

一旦复写父类成员,那么类对象调用成员的时候,就会调用复写后的新成员,如果需要使用被复写的父类的成员,需要特殊的调用方式:
方式1:调用父类成员
使用成员变量:父类名.成员变量
使用成员方法:父类名.成员方法(self)
方式2:使用super()调用父类成员
使用成员变量:super().成员变量
使用成员方法:super().成员方法()
只能在子类内调用父类的同名成员,子类的类对象直接调用会调用子类复写的成员。
案例:

Python在3.5版本的时候引入了类型注解,以方便静态类型检查工具,IDE等第三方工具。
类型注解:在代码中涉及数据交互的地方,提供数据类型的注解(显式的说明)。
主要功能:
支持:
基础语法: 变量: 类型
基础数据类型注解

类对象类型注解

基础容器类型注解

容器类型详细注解

注意:
除了使用 变量: 类型, 这种语法做注解外,也可以在注释中进行类型注解。
语法:
# type: 类型

类型注解主要功能在于:
并不会真正的对类型做验证和判断。也就是,类型注解仅仅是提示性的,不是决定性的。
函数和方法的形参类型注解语法:

同时,函数(方法)的返回值也是可以添加类型注解的。
语法如下:

案例:


使用Union[类型, ......, 类型]可以定义联合类型注解。
Union联合类型注解,在变量注解、函数(方法)形参和返回值注解中,均可使用。
导包:from typing import Union

多态,指的是:多种状态,即完成某个行为时,使用不同的对象会得到不同的状态。多态常作用在继承关系上。
即:

这种设计的含义是: