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

Python从入门到精通(第十章——1 类和对象)

提示:第二阶段-第一章-01-初识对象_哔哩哔哩_bilibili

目录

前言

1. 初识对象

1.1 数据的组织

1.2 使用对象组织数据

2. 类的成员方法

2.1 类的定义和使用

2.2 关键字self

2.3 上手演示

3 类和对象

3.1 现实世界的事物和类

3.2 类和对象

总结


前言

本文主要介绍了class对象和方法的定义和简单使用。


1. 初识对象

学习目标:理解使用对象完成数据组织的思路

1.1 数据的组织

学校开学,要求学生填写自己的基础信息,一人发一张白纸,让学生自己填。但是如果没有硬性规定填写哪些信息,学生们肯定填的是五花八门。所以学校将白纸设计为了一个登记表。那么有了这张登记表后,那么填写的信息可以说是简洁明了

那么在程序中,我们也可以通过下面的几种方式进行数据的储存:字典,字符串,列表等。那么这种形式多种多样,就会造成我们的信息组织的混乱和不统一。那么不管是生活上还是程序上,我们都需要数据能够简洁和统一

如果程序中也和生活中一样,可以将打印好的表格供人填写内容,那么数据的组织就非常方便了。

1.2 使用对象组织数据

在程序中是可以做到和生活中那样,设计表格、生产表格、填写表格的组织形式的。

1. 在程序中设计表格,我们称之为设计类(class):

2. 在程序中打印生产表格,我们称之为:创建对象

3. 在程序中填写表格,我们称之为:对象属性赋值

按照上述步骤就可以写一下代码体验一下啦:

其实说实话,这个确实有点像matlab的struct东西。

2. 类的成员方法

2.1 类的定义和使用

在上一节中,我们简单了解到可以使用类去封装属性,并基于类创建出一个个的对象来使用
现在我们来看看类的使用语法:

创建类对象的语法:

对象=类名称()

那么定义变量在第1节当中已经体验过了,那么定义函数是个什么情况呢?如下图所示,如果在类里定义了一个函数,也就意味着你给变量提供了一种行为。

同时我们可以获得类的具体对象,并且也可以用类的具体对象去调用类内部提供的这个函数。当我们的代码一执行,就会输出如下:

因此来说,从今天开始我们需要改口了:定义在类内部的函数叫方法;定义在类外部的函数我们叫函数

2.2 关键字self

当然,细心的同学已经发现了,在定义方法的时候其实和函数还是不太一样的,如下:

可以看到,在方法定义的参数列表中,有一个:self关键字
self关键字是成员方法定义的时候,必须填写的:
1. 它用来表示类对象自身的意思
2. 当我们使用类对象调用方法的是,self会自动被python传入
3. 在方法内部,想要访问类的成员变量,必须使用self

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

如:

可以看到,在传入参数的时候,self是透明的,可以不用理会它。注意,访问成员属性,前面必须加self,如self.name。如果是上面的msg属于外部的输入参数,前面则不需要加self。

2.3 上手演示

3 类和对象

3.1 现实世界的事物和类

现实世界的事物也有属性和行为,类也有属性和行为:
使用程序中的类,可以完美的描述现实世界的事物

3.2 类和对象

类只是一种程序内的“设计图纸”,需要基于图纸生产实体(对象),才能正常工作。这种套路,称之为:面向对象编程

在程序中通过类来描述:

其实说白了,也就是让对象帮我们重复干活


总结

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 基于JSP、java、Tomcat三者的项目实战--校园交易网(3)主页--添加商品功能
  • 【C++】数组案例 五只小猪称体重
  • C#中DataTable新增列、删除列、更改列名、交换列位置
  • 代码随想录算法训练营第37天|完全背包理论基础、518.零钱兑换II、377. 组合总和 Ⅳ、70. 爬楼梯(进阶版)
  • 【深度学习】深度学习基本概念、工作原理及实际应用案例
  • (STM32笔记)九、RCC时钟树与时钟 第一部分
  • 微信小程序之behaviors
  • 刷题——不同路径的数目
  • Python基础学习笔记(一)
  • 记录一次网站疑似被劫持的排查
  • 数据治理五部曲
  • uniapp中初始化对象不赋值,后续属性无法绑定问题
  • 掌握SQL Server事务日志的艺术:深入配置与管理
  • Spock Unit Test in Java
  • c++ 11 =delete
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • css系列之关于字体的事
  • iOS小技巧之UIImagePickerController实现头像选择
  • npx命令介绍
  • opencv python Meanshift 和 Camshift
  • Protobuf3语言指南
  • Spring Boot快速入门(一):Hello Spring Boot
  • Vue UI框架库开发介绍
  • WebSocket使用
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 深度学习在携程攻略社区的应用
  • 用jQuery怎么做到前后端分离
  • 再谈express与koa的对比
  • 栈实现走出迷宫(C++)
  • ​configparser --- 配置文件解析器​
  • ​Java并发新构件之Exchanger
  • ​水经微图Web1.5.0版即将上线
  • ‌JavaScript 数据类型转换
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #70结构体案例1(导师,学生,成绩)
  • #define、const、typedef的差别
  • #NOIP 2014# day.2 T2 寻找道路
  • $(function(){})与(function($){....})(jQuery)的区别
  • $(this) 和 this 关键字在 jQuery 中有何不同?
  • $.ajax,axios,fetch三种ajax请求的区别
  • (done) 两个矩阵 “相似” 是什么意思?
  • (不用互三)AI绘画:科技赋能艺术的崭新时代
  • (超详细)语音信号处理之特征提取
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (十二)Flink Table API
  • (一)、python程序--模拟电脑鼠走迷宫
  • (正则)提取页面里的img标签
  • (转)shell中括号的特殊用法 linux if多条件判断
  • ***原理与防范
  • .libPaths()设置包加载目录
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .net core docker部署教程和细节问题