目录
1. 认识对象
2. 成员方法
2.1 成员方法的定义语法
3. 构造方法
4. 其他的一些内置方法
4.1 __str__字符串方法
4.2 __lt__小于符号比较方法
4.3 __le__小于等于符号比较方法
4.4 __eq__等号比较方法
5. 封装特性
6. 继承特性
6.1 单继承
6.2 多继承
6.3 pass关键字
6.4 复写
6.5 调用父类同名成员
7. 变量的类型注解
8. 函数(方法)的类型注解
8.1 形参类型注解语法:
8.2 返回值的类型注语法:
9. union类型注解
1. 多态
在程序中:
类的定义:
class 类名称:
类的属性
类的行为
创建类对象的语法:对象 = 类名称()
语法:
可以看到,在方法定义的参数列表中,有一个self关键字,self关键字是成员方法定义时必须填写的:
self关键字尽管在参数列表中,但是传参的时候可以忽略他,如:
构造方法:__init__(),注意,init前后都是有两个下划线的。
构造方法实现功能:
这些内置方法也称为魔术方法:
当类对象需要被转换为字符串时,会输出以上的结果(内存地址)。
我们可以通过__str__方法,控制类转换为字符串的输出结果:
直接对两个对象进行比较是不可以的,但可以使用__lt__方法来控制小于和大于符号比较的输出结果。
同__lt__用法类似。
同__lt__用法类似
面向对象的三大特性:封装、继承、多态。
封装就是模仿现实世界提供一些私有成员和私有方法。两者的定义方法:
同时,私有方法无法直接被类对象使用;私有变量无法被类对象赋值,类对象也无法获取值。
私有成员无法被类对象使用,但可以被其他内部成员使用。
语法:
class 类名(父类名):
类内容体
继承表示:将从父类那里继承来的成员变量和成员方法(不包含私有)。
语法:
class 类名(父类1,父类2,父类3,。。。):
类内容体
注意:多个父类中,如果有同名的成员,那么默认以继承顺序(从左到右的顺序)为优先级。
pass关键字是占位语句,用来保证函数(方法)或类定义的完整性,表示无内容,空的意思。
子类继承父类的成员属性和成员方法后,如果对其不满意,可以进行重写。
如果需要使用被复写的父类的成员,需要使用特殊的调用方式:
方式1:直接调用父类成员
方式2:使用super()调用父类成员
注意:只能在子类内部调用父类的同名成员;子类的类对象直接调用会调用子类复写的成员。
注解功能:
语法1:变量:类型
注意:
——————————————————————————————————————
语法2:#type:类型
另外,即使注释了错误的类型,程序也不会运行错误;因为这个说到底就是一个帮助我们使用的注释。
def 函数方法名(形参名:类型,形参名:类型,。。):
pass
def 函数方法名(形参名:类型,形参名:类型,。。)-> 返回值类型:
pass
多态:多态指的是多种状态,即完成某个行为时,使用不同的对象会得到不同的状态。
抽象类:
如上图,父类Animal的speak方法是空实现,这种写法就是抽象类(也称之为接口)
抽象类:含有抽象方法的类为抽象类
抽象方法:方法体是空实现的(pass)的为抽象方法
总结: