当前位置: 首页 > news >正文

Python(白银时代)——面向对象

基本概念

面向过程

  • 是早期的一个编程概念,类似函数,但是没有返回值

  • 具体做法:

    • 把完成某个需求的所有步骤,从头到尾 逐步实现

    • 将某些功能独立的代码 封装成一个又一个 函数

    • 然后顺序调用不同的函数

  • 特点:

    • 注重 步骤与过程,不注重职责分工

    • 如果需求复杂,代码会变得很复杂

    • 开发复杂项目,没有固定的套路,开发难度大

面向对象

  • 相较于函数,面向对象是更大的封装,根据 职责 在一个对象中封装多个方法

  • 在完成某个需求前,首选确定 职责,根据职责确定不同的对象,在对象内部封装不同的方法

  • 最后让不同的对象调用不同的方法

  • 特点:

    • 注重 对象和职责,不同的对象承担不同的职责

    • 更加适合对应复杂的需求变化,专门应对复杂项目开发,提供固定套路

类和对象

  • 类  对象 是面向对象的两个核心概念

  • 在程序开发中,先有  ,后有 对象

    • 对一群具有相同 特征 或 行为的事物的一个统称,是抽象的,不能直接使用

      • 特征 即 属性

      • 行为 即 方法(函数)

    • 类相当于做汽车的图纸是一个模板,而根据这个 模板 做出来的具体物品就是 对象

    • 三要素

      • 类名 这类事物的名字使用大驼峰命名法(HelloWorld)

      • 属性 指这类事物的特征

      • 方法 指这类事物具备的行为

  • 对象

    • 对象 是根据类创建出来的一个具体存在,可以直接使用

    • 根据类创建出来的对象,具备与类相同的 属性 和 方法

类和对象的关系

  • 类是模板,对象 是根据 类 这个模板创建出来的,先有类,后有对象

  • 类 只有一个,根据这个类创建的 对象 可以有多个

    • 不同的对象之间,属性可能会各有不同

  • 类 中定义了什么样的属性和方法,对象中就是什么样的属性与方法

基础语法

dir内置函数

  • 在 Python 中,对象几乎无所不在,变更、数据、函数都是对象

  • 使用内置函数 dir 传入 标识符/数据,可以查看对象内的所有属性和方法

  • __方法名__ 格式的方法是Python提供的 内置方法/属性

  • 常见方法如下

方法名类型作用
__new__方法创建对象时,会被自动调用
__init__方法对象被初始化时,会被自动调用
__del__方法对象被从内存中销毁时,会被自动调用
__str__方法返回对象的描述信息,print 函数输出使用

示例

# 定义函数,测试内置方法
def demo():passprint(dir(demo))

输出结果

定义简单类

  • 面向对象 是更大的封装,在一个类中封装多个方法,通过这个类创建的对象 可以直接使用这些方法

  • 类中方法的定义,与之前定义函数时,几乎一样,区别在于每一个参数必须是 self, self 表示调用者本身的引用

  • 调用中对象中的方法时,self 不需要传递

  • 可以通过 self 调用对象的其它属性或方法

示例

"""
需求:
定义一个狗类,狗有 吃骨头,睡觉两个方法"""
class Dog:# 第一个参数 必须是 self,表示调用者本身的引用def eat(self):print("狗狗要吃骨头了...")def sleep(self):print("狗狗要睡觉了...")# 定义对象调用方法
dog=Dog()
dog.eat()
dog.sleep()# 定义第二个 狗对象
dog2=Dog()
dog2.eat()
dog2.sleep()# dog 和dog2 是用同一个类 创建出来的,里面的方法和属性是一样的,但是对象的引用是不同的
print(dog)
print(dog2)
 

输出结果

对象的初始化

  • 当使用 类名() 创建对象时,会 自动 执行以下操作

    • 为对象分配内存空间

    • 为对象的属性设置初始值(即调用 __init__ 方法)

  • __init__ 是对象的内置方法,专门用来定义一个类 具有哪些属性的方法

示例

class Dog:def __init__(self,name):print("开始初始化Dog的属性...")self.name=namedef eat(self):print("%s 开始吃骨头了..."%self.name)def sleep(self):print("%s 想要睡觉了..." %self.name)# 定义对象,并为其属性赋值
dog=Dog("小白")
dog.eat()
dog.sleep()dog2=Dog("小黑")
dog2.eat()
dog2.sleep()

输出结果

内置方法

  • __del__ 方法:当一个对象被从内存中销毁时,会自动调用

  • 应用场景

    • __init__ 改造初始化方法,可以让对象更加灵活

    • __del__ 如果希望对象在被销毁前,再做一些事情,可以使用此方法

  • 生命周期

    • 一个对象从调用 类名() 创建,生命周期开始

    • 一个对象的 __del__ 方法一旦被调用,生命周期结束

    • 在对象的生命周期内,可以访问对象属性,或者调用对象方法

  • __str__ 方法: 默认打印 对象变量的引用内存地址值,如果希望使用 print 输出对象变量时,能够打印 自定义的内容,就可以利用 __str__ 方法,该方法必须返回一个字符串

示例

class Dog:def __del__(self):print("小黑去轮回了......")def __str__(self):return "我是小黑的自定义打印内容。。。"dog=Dog()
print(dog)
print("---------------11111111111")

输出结果

程序猿与投资生活实录已改名为  程序猿知秋,WX同款,欢迎关注!

相关文章:

Python(白银时代)——面向对象

基本概念 面向过程 是早期的一个编程概念,类似函数,但是没有返回值 具体做法: 把完成某个需求的所有步骤,从头到尾 逐步实现 将某些功能独立的代码 封装成一个又一个 函数 然后顺序调用不同的函数 特点: 注重 步骤…...

Python流星雨代码

前言 用Python画场流星雨看看,源码见文末公众号哈。 流星类 def __init__(self): self.r ra.randint(50,100) self.t ra.randint(1,3) self.x ra.randint(-2000,1000) #流星的横坐标 self.y ra.randint(0,500) #流星…...

Java语言-----类与对象的秘密

目录 前言 一、类与对象的介绍 二、类的实例化 三.类与对象的使用方法 3.1对象的初始化 3.2内存显示图 四.this的使用方法 总结 😽个人主页: tq02的博客_CSDN博客-C语言,Java领域博主 🌈理想目标:努力学习,向Java进…...

大数据处理学习笔记2.1 初识Spark

文章目录零、本节学习目标一、Spark的概述(一)Spark的组件1、Spark Core2、Spark SQL3、Spark Streaming4、MLlib5、Graph X6、独立调度器、Yarn、Mesos(二)Spark的发展史1、发展简史2、目前最新版本二、Spark的特点(一…...

太强了,英伟达面对ChatGPT还有这一招...

大家好,我是 Jack。 今年可谓是 AI 元年,ChatGPT、AIGC、VITS 都火了一波。 我也先后发布了这几期视频: 这是一个大模型的时代,AI 能在文本、图像、音频等领域大放异彩,得益于大模型。而想要预训练大模型&#xff0c…...

【微服务】—— Nacos注册中心

文章目录一、Nacos 注册中心的设计原理1、数据模型2、数据⼀致性3、负载均衡4、健康检查二、Nacos 注册中心服务数据模型1、服务(Service)和服务实例(Instance)1)定义服务2)服务元数据3)定义实例…...

GPT-4是个编程高手,真服了!

上周给大家发了一个GPT-4教数学的介绍,很多人都被震撼了,感觉有可能在教育行业引发革命。它在编程领域表现如何?先不说能否替代程序员,这个还有待更多的测试和反馈,我想先试试它能不能像教数学那样教编程。我找了个Jav…...

基于深度学习的车型识别系统(Python+清新界面+数据集)

摘要:基于深度学习的车型识别系统用于识别不同类型的车辆,应用YOLO V5算法根据不同尺寸大小区分和检测车辆,并统计各类型数量以辅助智能交通管理。本文详细介绍车型识别系统,在介绍算法原理的同时,给出Python的实现代码…...

【蓝桥杯C++】3月21日刷题集训ABC-附百分代码,一目了然

目录 刷题集训 A Day 1 成绩分析 Day 1 饮料换购 刷题集训 B Day 1 分巧克力 Day 1 递增三元组 Day 1 小明的衣服 刷题集训 C Day 1 数字三角形 Day 1 跳跃 Day 1 蓝太子序列 刷题集训 A Day 1 成绩分析 题目描述 小蓝给学生…...

HBase高手之路4-Shell操作

文章目录HBase高手之路3—HBase的shell操作一、hbase的shell命令汇总二、需求三、表的操作1.进入shell命令行2.创建表3.查看表的定义4.列出所有的表5.删除表1)禁用表2)启用表3)删除表四、数据的操作1.添加数…...

聊聊SQL审计功能

什么是sql审计SQL审计是指对SQL语句的执行情况进行记录和追踪,包括SQL语句的执行时间、执行次数、执行结果等信息。通过SQL审计,可以对数据库的使用情况进行监控和管理,包括对SQL注入、非法访问、数据泄露等安全问题的检测和防范,…...

Markdown常用语法(字体颜色)

一些不错的帖子 写CSDN博客时&#xff0c;调节字体大小、颜色及其他样式的常用操作方法 设置字体颜色 使用<font>标记&#xff1a; 这是红色字体&#xff1a;<font colorred>我是红色的字体</font>显示效果如下&#xff1a; 这是红色字体&#xff1a;我是…...

I2C模块理解

I2C模块理解 文章目录I2C模块理解1.配置I2C2.信号3.数据传输3.1主机发送3.2主机接收3.3从机发送3.4从机接收4.中断传输5.Aardvark1.配置I2C I2C的特征 只需要两条公共总线&#xff08;线&#xff09;即可控制I2C网络上的任何设备无需像UART通信那样事先约定数据传输速率。因此…...

手把手教你使用--常用模块--HC05蓝牙模块,无线蓝牙串口透传模块,(实例:手机蓝牙控制STM32单片机点亮LED灯)

最近在学STM32&#xff0c;基本的学完了&#xff0c;想学几个模块来巩固一下知识&#xff0c;就想到了蓝牙模块。玩啥好难过有很多博客教怎么连的&#xff0c;但自己看起来还是有点糊涂。模块的原理和知识点我就不讲解了&#xff0c;这里我主要手把手记录一下我是如何对蓝牙模块…...

MyBatis高频面试题

目录 1、Mybatis中#和$的区别 2、Mybatis的编程步骤是什么样的 3...

Redis基础篇

redis的三大特点&#xff1a; 支持多数据类型&#xff0c;支持持久化&#xff0c;单线程 多路IO复用 对键操作的命令&#xff1a; keys * 查看当前库所有key exists key 判断key是否存在 del key 删除 unlink key 非阻塞删除&#xff0c;异步删除 expire key …...

unity的C#学习——静态常量和动态常量的定义与使用

定义常量 在C#中&#xff0c;常量是一种不可改变的量&#xff0c;一旦被定义&#xff0c;其值就不能被修改。C#中有两种类型的常量&#xff0c;静态常量和动态常量。 1、静态常量的定义 静态常量是在编译时就已经确定其值的常量&#xff0c;使用const关键字定义。由于在编译…...

栈----数据结构

栈&#x1f506;栈的概念&#x1f506;栈的结构&#x1f506;栈的实现&#x1f506;括号匹配问题&#x1f506;结语&#x1f506;栈的概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。**进行数据插入和删除操作的一端称为栈顶&am…...

【人人都能读标准】11. 原理篇总结:一个程序的完整执行过程

本文为《人人都能读标准》—— ECMAScript篇的第11篇。我在这个仓库中系统地介绍了标准的阅读规则以及使用方式&#xff0c;并深入剖析了标准对JavaScript核心原理的描述。 我们一路走了很远很远&#xff0c;终于到了本书原理篇的最后一站。 在原理篇中&#xff0c;我们先讲了…...

sheng的学习笔记-IO多路复用,NIO,BIO,AIO

基础概念IO分为几种&#xff1a;同步阻塞的BIO&#xff0c;同步非阻塞的NIO&#xff0c;异步非阻塞AIO&#xff0c;IO多路复用&#xff0c;信号驱动IO&#xff08;不常用&#xff09;对于一个network IO&#xff0c;它会涉及到两个系统对象&#xff0c;一个是调用这个IO的proce…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中&#xff0c;明确沟通敏捷转型目的尤为关键&#xff0c;团队成员只有清晰理解转型背后的原因和利益&#xff0c;才能降低对变化的…...

LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用

中达瑞和自2005年成立以来&#xff0c;一直在光谱成像领域深度钻研和发展&#xff0c;始终致力于研发高性能、高可靠性的光谱成像相机&#xff0c;为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...

API网关Kong的鉴权与限流:高并发场景下的核心实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中&#xff0c;API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关&#xff0c;Kong凭借其插件化架构…...