掌握 Python 面向对象编程与模块化导入技巧

news2025/2/23 1:36:02

文章目录

  • 前言
  • 一、封装、继承、多态
    • 1. 封装
    • 2. 继承
    • 3. 多态
  • 二、导入模块
    • 1. 导入整个模块
    • 2. 导入模块的特定部分
    • 3. 导入模块中的所有功能
    • 4. 导入整个模块并重命名
    • 5. 导入模块的特定部分并重命名
  • 三、函数参数类型
    • 1. 位置参数
    • 2. 关键字参数
    • 3. 默认参数
    • 4. 可变参数
  • 总结


前言

在 Python 编程中,面向对象编程(OOP)是一种强大的编程范式,它通过封装、继承和多态等特性,使得代码更加模块化、可重用和可维护。同时,Python 的模块系统也提供了很大的灵活性,允许我们将代码组织成多个模块,从而提高代码的可读性和可维护性。此外,函数参数类型的多样化使得函数调用更加灵活和简洁。本文将详细介绍这些关键概念,并通过示例代码进行说明。

在这里插入图片描述


一、封装、继承、多态

1. 封装

封装(Encapsulation)是将数据和操作数据的方法绑定在一起,并隐藏对象的内部实现细节。封装通过限制对数据的直接访问,保护对象的完整性和安全性。在 Python 中,可以通过使用前缀 ___ 将属性和方法设置为保护或私有。

在这里插入图片描述

2. 继承

继承(Inheritance)是通过从一个现有类(父类或基类)创建一个新类(子类或派生类)的方式。子类继承父类的属性和方法,并可以添加自己的属性和方法。

在这里插入图片描述

3. 多态

多态(Polymorphism)性是指在不同对象中使用相同的方法调用,并根据对象类型的不同产生不同的行为。多态使得对象具有多种形式。
在这里插入图片描述


二、导入模块

模块是组织和重用代码的重要方式。通过导入模块,可以在一个脚本或程序中使用其他文件中的函数、类和变量。

1. 导入整个模块

使用 import 关键字导入整个模块。这样可以使用模块中的所有功能,但需要通过模块名来访问。

import math

# 使用模块中的函数
print(math.sqrt(16))  # 4.0

2. 导入模块的特定部分

使用 from ... import ... 语法导入模块中的特定函数、类或变量。这样可以直接使用这些功能,而不需要模块名作为前缀。

from math import sqrt

# 直接使用导入的函数
print(sqrt(16))  # 4.0

3. 导入模块中的所有功能

使用 from ... import * 语法导入模块中的所有函数、类和变量。这样可以直接使用模块中的所有功能,但可能会引起命名冲突。

from math import *

# 直接使用模块中的函数
print(sqrt(16))  # 4.0

4. 导入整个模块并重命名

使用 import ... as ... 语法导入整个模块并将其重命名。

import math as m

# 使用别名来访问模块中的函数
print(m.sqrt(16))  # 4.0

5. 导入模块的特定部分并重命名

使用 from ... import ... as ... 语法从模块中导入特定的函数、类或变量,并将其重命名。这种方式在避免名称冲突时很有用。

from math import sqrt as sq

# 使用重命名后的sq函数
print(sq(16))  # 4.0

三、函数参数类型

1. 位置参数

使用参数名传递给函数的参数,顺序可以不同。

在这里插入图片描述

2. 关键字参数

使用参数名传递给函数的参数,顺序可以不同。

在这里插入图片描述

3. 默认参数

为参数提供默认值,如果调用函数时没有传递参数,则使用默认值。
在这里插入图片描述

4. 可变参数

使用 *args**kwargs 接收可变数量的位置参数和关键字参数。
在这里插入图片描述


总结

通过本文的介绍,我们详细了解了 Python 中的封装、继承和多态三个面向对象编程的核心概念,如何使用模块来组织和重用代码,以及函数参数类型的多样化使得函数调用更加灵活和简洁。首先,我们介绍了封装的基本概念和实现方法,然后讨论了继承如何让子类继承父类的属性和方法,最后展示了多态如何在不同对象中使用相同的方法调用并产生不同的行为。接着,我们学习了如何导入整个模块、特定部分以及重命名导入的模块和功能。最后,我们讲解了位置参数、关键字参数、默认参数和可变参数的使用方法。希望这篇博客能帮助读者更好地理解和运用 Python 进行面向对象编程和模块管理,如果有任何疑问或者建议,欢迎留言讨论🌹

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1954536.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue3-01创建项目

一、创建一个 Vue 应用 1、前提条件 前提条件: 已安装 18.3 或更高版本的 Node.js,如果当前的node 版本低于18的话,也没关系,可以使用这个命令行,忽略忽略引擎版本的检查 yarn config set ignore-engines true2、创建…

【数学建模】——【python】实现【最短路径】【最小生成树】【复杂网络分析】

目录 1. 最短路径问题 - 绘制城市间旅行最短路径图 题目描述: 要求: 示例数据: python 代码实现 实现思想: 要点: 2. 最小生成树问题 - Kruskal算法绘制MST 题目描述: 要求: 示例数据…

【前端 15】Vue生命周期

Vue生命周期 在Vue.js中,了解组件的生命周期对于开发者来说是至关重要的。Vue的生命周期指的是Vue实例从创建到销毁的一系列过程,每个阶段都对应着特定的生命周期钩子(或称为生命周期方法),允许我们在不同的时间点加入…

【中项】系统集成项目管理工程师-第7章 软硬件系统集成-7.2基础设施集成

前言:系统集成项目管理工程师专业,现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试,全称为“全国计算机与软件专业技术资格(水平)考试”&…

C#实现深度优先搜索(Depth-First Search,DFS)算法

深度优先搜索(DFS)是一种图搜索算法,它尽可能深入一个分支,然后回溯并探索其他分支。以下是使用C#实现DFS的代码示例: using System; using System.Collections.Generic;class Graph {private int V; // 顶点的数量pr…

牛客算法题解:数字统计、两个数组的交集、点击消除

目录 BC153 [NOIP2010]数字统计 ▐ 题解 NC313 两个数组的交集 ▐ 题解 AB5 点击消除 ▐ 题解 BC153 [NOIP2010]数字统计 题目描述: 题目链接: [NOIP2010]数字统计_牛客题霸_牛客网 (nowcoder.com) ▐ 题解 题目要求统计出某段数组中一共有多少个…

YOLOv8不同位置引入RepVGG重参数化

一、原理解析: 复杂的卷积网络大都具有如下缺点: 复杂的多分支设计(如ResNet中的残差相加和Inception中的分支连接)使模型难以实现和自定义,降低了推理速度和降低了内存利用率。一些组件(例如Xception和Mo…

嵌入式linux系统中压力测试的方法

在Linux环境下,确保系统各项资源充分且稳定地运行对任何系统管理员来说都至关重要。特别是在生产环境中,理解如何对系统资源进行基准测试和压力测试可以帮助预防未来的问题,同时也能够优化现有系统的性能。 在本文中,我们将探讨如何使用命令行工具来对Linux系统的CPU、内存…

开发环境搭建——Node.js

在启动前端项目的时候我们通常会用到Node.js,下面是对Node.js的下载安装以及配置的讲解 一、Node.js的安装 1.1、通过Node.js官网下载:Node.js — Run JavaScript Everywhere 下载后双击.msi安装文件后一直点击下一步即可 1.2、配置node 1.2.1、查看…

MT2140 供水管线(最小生成树Kruskal)

思路&#xff1a;Kruskal模板题 代码&#xff1a; #include<iostream> #include<stdio.h> #include<string.h> #include<vector> #include<algorithm> using namespace std;#define LL long long intconst int MAXN1e22;struct edge{int u,v,w;…

try-catch-finally 捕获异常不在catch里抛出;循环遍历对象生成任务,捕获异常对象不抛出,不影响其他正常对象生成任务

场景&#xff1a;一个模板绑定多个对象&#xff0c;要对每个对象生成任务。捕获生成任务过程中的异常&#xff0c;但是不抛出&#xff0c;只是用日志记录。这样做目的&#xff1a;循环遍历对象生成任务时&#xff0c;异常对象数据生成任务时发生异常只是导致自己生成任务失败&a…

29 列表元素访问

创建列表之后&#xff0c;可以使用整数作为下标来访问其中的元素&#xff1b;列表还支持使用负整数作为下标。 x list(hello world) print(x) print(x[0]) # 下标为0的元素&#xff0c;第一个元素 print(x[-1]) # 下标为-1的元素&#xff0c;最后一个元素x[5] print(x)

RedHat9 | Ansible 角色

环境版本说明 RedHat9 [Red Hat Enterprise Linux release 9.0]Ansible [core 2.13.3]Python [3.9.10]jinja [3.1.2] 描述角色结构 Playbook可能比较冗长且负载&#xff0c;也可能存在大量的重复代码。而角色&#xff08;roles&#xff09;可以用于层次性结构化的组织playbo…

【python】python生活管理费系统(源码+论文)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

Python爬虫入门01:在Chrome浏览器轻松抓包

文章目录 爬虫基本概念爬虫定义爬虫工作原理爬虫流程爬虫类型爬虫面临的挑战 使用Chrome浏览器抓包查看网页HTML代码查看HTTP请求请求头&#xff08;Request Header&#xff09;服务器响应抓包的意义 爬虫基本概念 爬虫定义 爬虫&#xff08;Web Crawler 或 Spider&#xff0…

【JavaEE初阶】线程安全(重点)

目录 &#x1f4d5; 线程安全的概念 &#x1f384; 观察线程不安全 &#x1f333; 线程不安全的原因 &#x1f6a9; 原因&#xff1a; &#x1f332;解决之前的线程不安全问题 &#x1f6a9; synchronized 关键字 &#x1f4d5; 线程安全的概念 如果多线程环境下…

前端面经1

1、js是单线程还是多线程&#xff1f; 单线程执行。一次只能执行一个任务&#xff0c;处理任务的方式是通过一个任务队列&#xff08;也称为消息队列&#xff09;来实现的。如果某个操作&#xff08;如网络请求或定时器&#xff09;需要花费较长时间才能完成&#xff0c;它不会…

Flink SQL 的工作机制

前言 Flink SQL 引擎的工作流总结如图所示。 从图中可以看出&#xff0c;一段查询 SQL / 使用TableAPI 编写的程序&#xff08;以下简称 TableAPI 代码&#xff09;从输入到编译为可执行的 JobGraph 主要经历如下几个阶段&#xff1a; 将 SQL文本 / TableAPI 代码转化为逻辑执…

如何保证前后端交互信息不被篡改。

先说说前后端有哪些认证方式来保证&#xff1a; 基于 session 的认证方式&#xff1a;前端在用户登录成功后&#xff0c;后端会在服务器端生成一个唯一的 session ID&#xff0c;并将该 session ID 返回给前端&#xff0c;在后续的请求中&#xff0c;前端需要带上该 session ID…