Python基础4——面向对象

目录

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. 多态


1. 认识对象

在程序中:

  • 设计表格,称之为:设计类(class)
  • 打印表格,称之为:创建对象
  • 填写表格,称之为:为对象的属性赋值

2. 成员方法

类的定义:

class 类名称:

        类的属性

        类的行为

  • class是关键字,表示要定义一个类
  • 类的属性:即定义在类内部的变量(成员变量)
  • 类的行为:即定义在类内部的函数(成员方法)

创建类对象的语法:对象 = 类名称()

2.1 成员方法的定义语法

语法:

可以看到,在方法定义的参数列表中,有一个self关键字,self关键字是成员方法定义时必须填写的: 

  • 它用来表示类对象自身的意思
  • 当我们使用类对象调用方法时,self会被自动传入,所以不用明确写上self参数
  • 在方法内部,想要访问类的成员变量时,必须使用self

self关键字尽管在参数列表中,但是传参的时候可以忽略他,如:

3. 构造方法

构造方法:__init__(),注意,init前后都是有两个下划线的。

构造方法实现功能:

  • 在创建类对象的时候,会自动执行
  • 在创建类对象的时候,将传入参数自动传递给__init__方法使用。

  • 构造方法也是成员方法,不要忘记在参数列表中提供:self
  • 在构造方法内定义成员变量,需要使用self关键字

4. 其他的一些内置方法

这些内置方法也称为魔术方法:

  • __init__:构造方法
  • __str__:字符串方法
  • __lt__:小于、大于符号比较
  • __le__:小于等于、大于等于符号比较
  • __eq__:==符号比较

4.1 __str__字符串方法

当类对象需要被转换为字符串时,会输出以上的结果(内存地址)。

我们可以通过__str__方法,控制类转换为字符串的输出结果:

4.2 __lt__小于符号比较方法

直接对两个对象进行比较是不可以的,但可以使用__lt__方法来控制小于和大于符号比较的输出结果。

4.3 __le__小于等于符号比较方法

同__lt__用法类似。

4.4 __eq__等号比较方法

同__lt__用法类似

5. 封装特性

面向对象的三大特性:封装、继承、多态。

封装就是模仿现实世界提供一些私有成员和私有方法。两者的定义方法:

  • 私有成员变量:以两个下划线开头加上变量名:__变量名
  • 私有成员方法:以两个下划线开头加上方法名:__变量名(self)

同时,私有方法无法直接被类对象使用;私有变量无法被类对象赋值,类对象也无法获取值。

私有成员无法被类对象使用,但可以被其他内部成员使用。

6. 继承特性

6.1 单继承

语法:

class 类名(父类名):

        类内容体

继承表示:将从父类那里继承来的成员变量和成员方法(不包含私有)。

6.2 多继承

语法:

class 类名(父类1,父类2,父类3,。。。):

        类内容体

注意:多个父类中,如果有同名的成员,那么默认以继承顺序(从左到右的顺序)为优先级。

6.3 pass关键字

pass关键字是占位语句,用来保证函数(方法)或类定义的完整性,表示无内容,空的意思。

6.4 复写

子类继承父类的成员属性和成员方法后,如果对其不满意,可以进行重写。

6.5 调用父类同名成员

如果需要使用被复写的父类的成员,需要使用特殊的调用方式:

方式1:直接调用父类成员

  • 使用成员变量:父类名.成员变量
  • 使用成员方法:父类名.成员方法(self)

方式2:使用super()调用父类成员

  • 使用成员变量:super().成员变量
  • 使用成员方法:super().成员方法()

注意:只能在子类内部调用父类的同名成员;子类的类对象直接调用会调用子类复写的成员。

7. 变量的类型注解

注解功能:

  • 帮助python的第三方工具对代码进行类型推断,协助做代码提示
  • 帮助开发者自身对变量进行类型注释

语法1:变量:类型

注意:

  • 元组类型设置详细注解,需要将每一个元素都标记出来
  • 字典类型设置详细注解,需要2个类型,第一个是key,第二个是value

——————————————————————————————————————

语法2:#type:类型

另外,即使注释了错误的类型,程序也不会运行错误;因为这个说到底就是一个帮助我们使用的注释。

8. 函数(方法)的类型注解

8.1 形参类型注解语法:

def 函数方法名(形参名:类型,形参名:类型,。。):

        pass

8.2 返回值的类型注语法:

def 函数方法名(形参名:类型,形参名:类型,。。)-> 返回值类型:

        pass

9. union类型注解

1. 多态

多态:多态指的是多种状态,即完成某个行为时,使用不同的对象会得到不同的状态。

抽象类:

如上图,父类Animal的speak方法是空实现,这种写法就是抽象类(也称之为接口)

抽象类:含有抽象方法的类为抽象类

抽象方法:方法体是空实现的(pass)的为抽象方法

总结:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值