08-1 ⾯向对象基础

⾯向对象基础

⽬标

  • 理解⾯向对象

  • 类和对象

  • 添加和获取对象属性

  • 魔法⽅法

1.面向对象概述(简单理解)

  • ⾯向对象是⼀种抽象化的编程思想,很多编程语⾔中都有的⼀种思想。

    例如:洗⾐服

    思考:⼏种途径可以完成洗⾐服?

    答: ⼿洗 和 机洗。

    ⼿洗:找盆 - 放⽔ - 加洗⾐粉 - 浸泡 - 搓洗 - 拧⼲⽔ - 倒⽔ - 漂洗N次 - 拧⼲ - 晾晒。

    机洗:打开洗⾐机 - 放⾐服 - 加洗⾐粉 - 按下开始按钮 - 晾晒。

    思考:对⽐两种洗⾐服途径,同学们发现了什么?

    答:机洗更简单

    思考:机洗,只需要找到⼀台洗⾐机,加⼊简单操作就可以完成洗⾐服的⼯作,⽽不需要关⼼洗⾐机内部发⽣了什么事情。

2.类和对象

思考:洗⾐机洗⾐服描述过程中,洗⾐机其实就是⼀个事物,即对象,洗⾐机对象哪来的呢?

答:洗⾐机是由⼯⼚⼯⼈制作出来。

思考:⼯⼚⼯⼈怎么制作出的洗⾐机?

答:⼯⼈根据设计师设计的功能图纸制作洗⾐机。

总结:图纸 → 洗⾐机 → 洗⾐服。

在⾯向对象编程过程中,有两个重要组成部分:类 和 对象。

类和对象的关系:⽤类去创建⼀个对象。

2.1 理解类和对象

2.1.1

类是对⼀系列具有相同特征和⾏为的事物的统称,是⼀个抽象的概念,不是真实存在的事物。

  • 特征即是属性

  • ⾏为即是⽅法

类⽐如是制造洗⾐机时要⽤到的图纸,也就是说类是⽤来创建对象。

2.1.2 对象

对象是类创建出来的真实存在的事物,例如:洗⾐机。

注意:开发中,先有类,再有对象。

2.2 ⾯向对象实现⽅法

2.2.1 定义类

Python2中类分为:经典类 和 新式类

  • 语法
class 类名():代码......

注意:类名要满⾜标识符命名规则,同时遵循⼤驼峰命名习惯

  • 体验
class Washer():def wash(self):print('我会洗⾐服')

2.2.2 创建对象

对象⼜名实例。

  • 语法
对象名 = 类名()
  • 体验
# 创建对象
haier1 = Washer()
# <__main__.Washer object at 0x0000018B7B224240>
print(haier1)
# haier对象调⽤实例⽅法
haier1.wash()

注意:创建对象的过程也叫实例化对象

2.2.3 self

self指的是调⽤该函数的对象。

# 1. 定义类
class Washer():def wash(self):print('我会洗⾐服')print(self)#打印对象,获取的是对象地址:<__main__.Washer object at 0x0000025346580588># 2. 创建对象
haier1 = Washer()print(haier1)#打印对象,默认输出是对象地址:<__main__.Washer object at 0x0000025346580588>
# haier1对象调⽤实例⽅法
haier1.wash()
haier2 = Washer()print(haier2)#创建haier2对象,打印对象地址:<__main__.Washer object at 0x0000025346580630>

注意:打印对象和self得到的结果是⼀致的,都是当前对象的内存中存储地址。

3 .添加和获取对象属性

属性即是特征,⽐如:洗⾐机的宽度、⾼度、重量…

对象属性既可以在类外⾯添加和获取,

3.1 类外⾯添加对象属性

  • 语法:

    • 对象名.属性名 = 值
  • 体验

    • haier1.width = 500
      haier1.height = 800
      

3.2 类外⾯获取对象属性

  • 语法:

    • 对象名.属性名
  • 体验

    • print(f'haier1洗⾐机的宽度是{haier1.width}')
      print(f'haier1洗⾐机的⾼度是{haier1.height}')
      

3.3 类⾥⾯获取对象属性

  • 语法:

    • self.属性名
  • 体验:

    • # 定义类
      class Washer():def print_info(self):# 类⾥⾯获取实例属性print(f'haier1洗⾐机的宽度是{self.width}')print(f'haier1洗⾐机的⾼度是{self.height}')
      # 创建对象
      haier1 = Washer()
      # 添加实例属性
      haier1.width = 500
      haier1.height = 800
      haier1.print_info()
      

4.魔法⽅法

在Python中, __xx__() 的函数叫做魔法⽅法,指的是具有特殊功能的函数。

4.1 __init__

4.1.1 体验__init__()

思考:洗⾐机的宽度⾼度是与⽣俱来的属性,可不可以在⽣产过程中就赋予这些属性呢?

答:理应如此。

__init__() ⽅法的作⽤:初始化对象。

  • 体验:

    • 目标: 定义__init__魔法方法设置初始化属性 并访问调用

    • 步骤:

      • """
        1. 定义类init魔法方法: width 和 height添加实例方法:访问实例属性2. 创建对象
        3. 验证成果调用实例方法
        """
        
    • 代码:

      • class Washer():def __init__(self):#添加实例属性self.width = 500self.height = 800def print_info(self):print(f"洗衣机宽度:{self.width},高度:{self.height}")haier = Washer()
        haier.print_info()
        

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

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

相关文章

Axure动态面板的应用与ERP系统登录界面、主页左侧菜单栏、公告栏的绘制

目录 一、动态面板 1.1 简介 1.2 使用动态面板的原因 二、动态面板之轮播图实现案例 2.1 完成步骤 2.2 最终效果 三、动态面版之多方式登录案例 四、动态面板之后台主界面左侧菜单栏 五、ERP登录界面 六、ERP主界面菜单栏 七、ERP公告栏 八、登录页面跳转公告栏 一…

【密码学】群的证明(习题)

0.前置知识 1.习题 记录一次密码学作业~群的判定 2.求解

@SpringBootApplication 包含的三个注解及其含义

一、SpringBootApplication 注解源码 // // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) //package org.springframework.boot.autoconfigure;import java.lang.annotation.Documented; import java.lang.annotation.E…

简洁高效的 NLP 入门指南: 200 行实现 Bert 文本分类 (Pytorch 版)

简洁高效的 NLP 入门指南: 100 行实现 Bert 文本分类 Pytorch 版 概述NLP 的不同任务Bert 概述MLM 任务 (Masked Language Modeling)TokenizeMLM 的工作原理为什么使用 MLM NSP 任务 (Next Sentence Prediction)NSP 任务的工作原理NSP 任务栗子NSP 任务的调整和局限性 安装和环…

C#读取Excel中的公式,并生成值

在C#中读取Excel中的公式并生成其计算结果可以使用开源库如EPPlus或Microsoft.Office.Interop.Excel&#xff0c;如果是.xlsm宏文件需用到Microsoft.Office.Interop.Excel。 1.EPPlus方式 using System; using OfficeOpenXml; class Program { static void Main() {…

MQ入门—centos 7安装RabbitMQ 安装

三&#xff1a;RabbitMQ 安装 1.环境准备 Linux 的 CentOS 7.x 版本。Xftp 传输安装包到 Linux。Xshell 连接 Linux&#xff0c;进行解压安装。 RabbitMQ安装包 链接&#xff1a;https://pan.baidu.com/s/1ZYVI4YZlvMrj458jakla9A 提取码&#xff1a;dyto xshell安装包 链接&…

HPM6750系列--第八篇 Segger Embedded Studio for RISC-V查看外设寄存器

一、目的 在博客《HPM6750系列--第五篇 使用Segger Embedded Studio for RISC-V开发环境》中我们详细介绍了在SES中进行开发调试的相关步骤&#xff0c;但是在调试过程中发现未找到外设寄存器窗口&#xff0c;本篇就此问题指导大家进行设置查看寄存器信息。 二、介绍 请务必先阅…

PPT插件-超好用的插件-统一尺寸、裁剪、分布-大珩助手

超级对齐-统一尺寸、裁剪、分布 操作方法 先选中1个或多个形状&#xff0c;然后最后选择目标形状&#xff0c;若希望形状的位置也改变&#xff0c;则需要在对齐幻灯下选中对齐对象。 等比缩放 将选中的1个或多个形状的外形尺寸设置为目标形状大小&#xff0c;图像的纵横比可…

厨房革命@2023:新时代与旧观念的“互搏”

【潮汐商业评论/原创】 你家的厨房电器&#xff0c;多久没换了&#xff1f; 张姐家的灶最近彻底报废了&#xff0c;之前也找人来修过几次&#xff0c;缝缝补补算是用了八年有余。要不是这次彻底坏了&#xff0c;张姐怎么也不会买台新的。 “上次见邻居搬新房装了一台集成灶&…

【数组Array】力扣-304 二维区域和检索 - 矩阵不可变

目录 题目描述 解题过程 labuladong题解 题目描述 给定一个二维矩阵 matrix&#xff0c;以下类型的多个请求&#xff1a; 计算其子矩形范围内元素的总和&#xff0c;该子矩阵的 左上角 为 (row1, col1) &#xff0c;右下角 为 (row2, col2) 。 实现 NumMatrix 类&#xf…

win10环境下git安装和基础操作

简述 关于git的作用就不多赘述了&#xff0c;配合GitHub&#xff0c;达到方便人们日常项目维护和管理&#xff0c;每一次项目增删改查都可以看的清清楚楚&#xff0c;方便团队协作和个人项目日常维护。 下载git 首先我们自然是要到官网下载git&#xff0c;下载地址为https:/…

电脑录制高清视频文件是怎么设置的

在当今数字化的时代&#xff0c;电脑已经成为我们生活中不可或缺的工具。除了处理文档、浏览网页等常见功能外&#xff0c;它还可以轻松录制高清视频文件。那么&#xff0c;具体如何设置电脑才可以录制高清视频呢&#xff1f; 首先&#xff0c;要确保电脑的硬件配置是否能够支…

IEEE Transactions on Industrial Electronics工业电子TIE论文投稿须知

一、背景 IEEE TIE作为控制领域的TOP期刊&#xff0c;接收机器人、控制、自动驾驶、仪器和传感等方面的论文&#xff0c;当然范围不止这些&#xff0c;感兴趣的可以自行登录TIE官网查看。所投稿论文必须经过实验验证&#xff0c;偏工程应用类&#xff0c;当然也必须有方法上的…

关于“Python”的核心知识点整理大全21

9.3.2 Python 2.7 中的继承 在Python 2.7中&#xff0c;继承语法稍有不同&#xff0c;ElectricCar类的定义类似于下面这样&#xff1a; class Car(object):def __init__(self, make, model, year):--snip-- class ElectricCar(Car):def __init__(self, make, model, year):supe…

overleaf 加载pdf格式的矢量图时,visio 图片保存为pdf格式,如何确保pdf页面大小和图片一致

Overleaf支持多种矢量图形格式&#xff0c;其中一些常见的包括&#xff1a; PDF&#xff08;Portable Document Format&#xff09;&#xff1a; PDF是一种常见的矢量图形格式&#xff0c;Overleaf可以直接加载和显示PDF文件。许多绘图工具和LaTeX生成的图形都可以导出为PDF格式…

算法的四大思想之一:回溯思想

回溯是最重要的算法思想之一&#xff0c;主要解决一些暴力枚举也搞不定的问题&#xff08;组合、子集、分割、排列、棋盘等等&#xff09;。性能并不高&#xff0c;但是那些暴力枚举都无法ko的问题能解出来就可以了&#x1f923;。 一、回溯思想 定义 是一个种基于深度优先搜…

[Verilog]用Verilog实现并串转换

用Verilog实现并串转换 摘要 一、并串转换模块 并串转换的原理是&#xff1a;先将八位数据暂存于一个四位寄存器器中&#xff0c;然后左移输出到一位输出端口&#xff0c;这里通过load_valid信号指示并行数据输入。 1.1 用移位寄存器实现 module parallel_serial(clk, rst_n,…

免担心!如果你的处理器不支持TPM 2.0,配置一下就可以安装Windows 11了

这篇文章解释了如何使用Windows注册表编辑器将你的电脑设置为Windows 11,即使你没有支持TPM 2.0的处理器。 如何在不支持的处理器中安装Windows 11 要使你的电脑即使有不受支持的处理器也能安装Windows 11,你需要对Windows注册表进行一些更改。这并不像看上去那么复杂,但也…

YOLOv8改进 | 2023Neck篇 | 利用RepGFPN改进特征融合层(附yaml文件+添加教程)

一、本文介绍 本文给大家带来的改进机制是Damo-YOLO的RepGFPN&#xff08;重参数化泛化特征金字塔网络&#xff09;&#xff0c;利用其优化YOLOv8的Neck部分&#xff0c;可以在不影响计算量的同时大幅度涨点&#xff08;亲测在小目标和大目标检测的数据集上效果均表现良好涨点…

Zabbix监控网站

mkdir /etc/zabbix/scripts vim /etc/zabbix/scripts/nginx-check.sh #!/bin/bash #Zabbix requested parameter ZBX_REQ_DATA“$1” ZBX_REQ_DATA_URL“$2” #Nginx defaults #设置Nginx监控URL NGINX_STATUS_DEFAULT_URL“http://localhost:10080/nginx_status” #定义监控工…