Python语法(3)- 面向对象

1 成员方法

1.1 类的定义和使用

class 类名称:
	类属性
	类行为

创建类对象的语法:

对象 = 类名称()

1.2 成员变量和成员方法

在这里插入图片描述

1.3 成员方法的定义语法

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

在这里插入图片描述
可以看到,在方法定义的参数列表中,有一个:self关键字
self关键字是成员方法定义的时候,必须填写的

  • 它用来表示类对象自身的意思
  • 当我们使用类对象调用方法的是,self会自动被python传入
  • 在方法内部,想要访问类的成员变量,必须使用self

在这里插入图片描述
注意事项
self关键字,尽管在参数列表中,但是传参的时候可以忽略它。

2 构造方法

属性(成员变量)的赋值

构造方法
Python类可以使用:__init__()方法,称之为构造方法。
可以实现:
在创建类对象(构造类)的时候,会自动执行
在创建类对象(构造类)的时候,将传入参数自动传递给__init__方法使用
在这里插入图片描述
构建类时传入的参数会自动提供给__init__方法
构建类的时候__init__方法会自动执行

3 其它内置方法

魔术方法

在这里插入图片描述

__str__ 字符串方法

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

  • 方法名:str
  • 返回值:字符串
  • 内容:自行定义
__lt__ 小于符号比较方法

在这里插入图片描述

__le__ 小于等于比较符号方法

魔术方法:__le__可用于:<=、>=两种比较运算符上。
在这里插入图片描述

__eq__比较运算符实现方法

在这里插入图片描述

  • 不实现__eq__方法,对象之间可以比较,但是是比较内存地址,也即是:不同对象==比较一定是False结果。
  • 实现了__eq__方法,就可以按照自己的想法来决定2个对象是否相等了。

在这里插入图片描述

4 封装

4.1 私有成员

定义私有成员的方式非常简单,只需要:

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

即可完成私有成员的设置。
在这里插入图片描述

4.2 使用私有成员

私有方法无法直接被类对象使用
在这里插入图片描述
私有变量无法赋值,也无法获取值
在这里插入图片描述
在这里插入图片描述

5 继承

5.1 单继承

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

5.2 多继承

在这里插入图片描述

  • 注意事项:
    多个父类中,如果有同名的成员,那么默认以继承顺序(从左到右)为优先级。即:先继承的保留,后继承的被覆盖。
  • pass关键字
    pass是占位语句,用来保证函数(方法)或类定义的完整性,表示无内容,空的意思。

5.3 复写

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

5.4 调用父类同名成员

一旦复写父类成员,那么类对象调用成员的时候,就会调用复写后的新成员,如果需要使用被复写的父类的成员,需要特殊的调用方式:

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

  • 方式2:使用super()调用父类成员
    使用成员变量:super().成员变量
    使用成员方法:super().成员方法()

只能在子类内调用父类的同名成员,子类的类对象直接调用会调用子类复写的成员。

案例:
在这里插入图片描述

6 类型注解

6.1 定义

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

主要功能:

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

支持:

  • 变量的类型注解
  • 函数(方法)形参列表和返回值的类型注解

6.2 类型注解的语法

6.2.1 为变量设置类型注解

基础语法: 变量: 类型

  • 基础数据类型注解
    在这里插入图片描述

  • 类对象类型注解
    在这里插入图片描述

  • 基础容器类型注解
    在这里插入图片描述

  • 容器类型详细注解

    在这里插入图片描述

注意:

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

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

# type: 类型
  • 在注释中进行类型注解
    在这里插入图片描述
6.2.2 类型注解的限制

类型注解主要功能在于:

  • 帮助第三方IDE工具(如PyCharm)对代码进行类型推断,协助做代码提示
  • 帮助开发者自身对变量进行类型注释(备注)

并不会真正的对类型做验证和判断。也就是,类型注解仅仅是提示性的,不是决定性的。

6.3 函数(方法)的类型注解 - 形参注解

函数和方法的形参类型注解语法:
在这里插入图片描述

6.4 函数(方法)的类型注解 - 返回值注解

同时,函数(方法)的返回值也是可以添加类型注解的。
语法如下:
在这里插入图片描述
案例:
在这里插入图片描述
在这里插入图片描述

6.5 Union类型

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

导包:from typing import Union
在这里插入图片描述

7 多态

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

  • 以父类做定义声明
  • 以子类做实际工作
  • 用以获得同一行为, 不同状态

8 抽象类(接口)

在这里插入图片描述

这种设计的含义是:

  • 父类用来确定有哪些方法
  • 具体的方法实现,由子类自行决定
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python中的面向对象编程(Object-Oriented Programming,简称 OOP)提供了一些关键概念和语法,用于创建和使用对象。下面是Python面向对象编程的常用语法: 1. 类(Class):类是对象的蓝图或模板,用于定义对象属性和方法。 - 定义类:使用 `class` 关键字来定义类。 - 初始化方法:`__init__(self, ...)` 是一个特殊的方法,用于初始化对象属性。 - 类属性和实例属性:类属性是属于类本身的属性,实例属性是属于每个对象属性。 - 方法:类中的函数称为方法,用于定义对象的行为。 2. 对象(Object):对象是类的实例,具有类定义的属性和方法。 - 创建对象:使用类名后跟括号来创建对象,如 `obj = ClassName()`。 - 访问对象属性:使用点号操作符(`.`)来访问对象属性,如 `obj.property`。 - 调用对象方法:使用点号操作符(`.`)来调用对象的方法,如 `obj.method()`。 3. 继承(Inheritance):继承是一种机制,允许一个类继承另一个类的属性和方法。 - 定义子类:在类定义时,将父类作为基类传递给子类来定义继承关系。 - 覆盖方法:子类可以重写父类的方法,以实现自己的行为。 - 调用父类方法:在子类中,可以使用 `super()` 函数来调用父类的方法。 4. 多态(Polymorphism):多态允许在不同的对象上使用相同的方法名,但具体执行的方法可能不同。 - 方法重载:Python 不支持方法重载,但可以通过默认参数或可变参数来模拟多个方法。 - 方法重写:子类可以重写父类的方法,以实现自己的行为。 5. 封装(Encapsulation):封装是一种将数据和行为包装到对象中的机制,隐藏了内部实现细节。 - 访问控制:通过属性和方法的访问修饰符(如私有、公有、保护)来控制对对象成员的访问。 这些是面向对象编程的一些基本语法和概念,在实际开发中,可以根据需求使用它们来创建和操作对象

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术闲聊DD

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值