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
多态,指的是:多种状态,即完成某个行为时,使用不同的对象会得到不同的状态。多态常作用在继承关系上。
即:
这种设计的含义是: