[Python3] 021 面向对象 第一弹
1. 面向对象概述
1.1 OOP 思想
- 接触到任意一个任务,首先想到的是任务中的世界的构成(模型化)
1.2 几个名词
名词 | 释义 |
---|---|
OO | 面向对象 |
OOA | 面向对象分析 |
OOD | 面向对象设计 |
OOI | 面向对象实现 |
OOP | 面向对象编程 |
- 面向对象的实现过程
- OOA -> OOD -> OOI
1.3 类与对象
- 类与对象的概念
术语 | 概念 |
---|---|
类 | 抽象名词,代表一个集合,共性的事物 |
对象 | 具象的事物,单个个体 |
- 类与对象的关系
术语 | 释义 |
---|---|
类 | 抽象,代表一大类事物 |
对象 | 具象,代表某一类事物的某一个个体 |
- 类的两个内容
术语 | 释义 |
---|---|
属性(变量) | 表明事物的特征 |
成员方法(函数) | 表明事物功能或动作 |
2. 类的基本实现
2.1 类的命名
- 遵守变量命名的规范
- 大驼峰(形如 YorkFish)
- 尽量避开系统命名
2.2 如何声明一个类
- 必须用
class
关键字 - 类由“属性”和“方法”构成,不允许出现别的
- 定义成员属性可以直接使用变量赋值,如果没有值,允许使用
None
2.3 如何实例化一个类
变量 = 类名() # 实例化了一个对象
2.4 如何访问对象成员
- 使用点操作符,形如
- obj.成员属性名称
- obj.成员方法
2.5 如何检查类与对象的所有成员
- 可以通过默认内置变量检查
- 检查类的所有成员
class_name.__dict__ # dict前后各有两个下划线
- 检查对象的所有成员
obj.__dict__ # dict前后各有两个下划线
3. anaconda 基本使用
- anaconda
- 主要是一个虚拟环境管理器
- 还是一个安装包管理器
命令 | 释义 |
---|---|
conda list | 显示 anaconda 安装的包 |
conda env list | 显示 anaconda 的虚拟环境列表 |
conda create -n xxx python=3.7 | 创建 python 版本为 3.7 的虚拟环境,名称为 xxx |
source active xxx | 激活 xxx 虚拟环境 |
source deactive | 挂起 xxx 虚拟环境 |
4. 类和对象的成员分析
- “类”与“对象”都可以存储成员
- 成员可以归“类”所有
- 也可以归“对象”所有
- “类”存储成员时使用的是与“类”关联的一个“对象”
- “对象”访问一个成员时
- 如果“对象”中没有该成员,尝试访问“类”中的同名成员
- 如果“对象”中有此成员,一定使用“对象”中的成员
- 创建“对象”时
- “类”中的成员不会放入对象当中
- 而是得到一个空对象,没有成员
- 通过“对象”对“类”中成员重新赋值,或者通过“对象”添加成员时
- 对应成员会保存在对象中,而不会修改类成员
5. 关于 self
- self 在对象的方法中表示当前对象本身
- 通过对象调用一个方法时,该对象会将“自己”自动传至当前方法的第一个参数中
- 即,哪个对象调用的方法,方法内的 self 就是指向哪个对象的引用
- self 并不是关键字
- 它只是一个用于接收对象的普通参数
- 理论上可以用任何一个普通变量名代替
- 方法中有 self 形参的方法称为非绑定类的方法,可以通过对象访问
- 方法中没有 self 的是绑定类的方法,只能通过类访问
- 使用类访问绑定类的方法时
- 如果类方法中需要访问当前类的成员,可以通过 "class.成员名" 来访问
此为听 北京图灵学院的 Python3 公开课 所记笔记
[Python3] 021 面向对象 第一弹的更多相关文章
- [Python3] 022 面向对象 第二弹
目录 6. 面向对象的三大特性 6.1 封装 6.1.1 私有 private 6.1.2 受保护 protected 6.1.3 公开 public 6.2 继承 6.2.1 继承的概念与作用 6. ...
- [Python3] 023 面向对象 第三弹
目录 7. 类相关函数 8. 类的成员描述符(属性) 9. 类的内置属性 10. 类的常用魔术方法 10.1 操作类 10.2 描述符 10.3 属性操作 10.4 运算分类相关魔术方法 接上一篇 [ ...
- [Python3] 024 面向对象 第四弹
目录 11. 类和对象的三种方法 12. 抽象类 12.1 抽象方法 12.2 抽象类 12.3 抽象类的使用 13. 自定义类 接上一篇 [Python3] 023 面向对象 第三弹 11. 类和对 ...
- Java基础-面向对象第一特性之封装(Encapsulation)
Java基础-面向对象第一特性之封装(Encapsulation) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.理解什么是面向过程和面向对象 面向过程与面向对象都是我们编程中 ...
- Python3中面向对象 OOP
Python3中面向对象 OOP 定义: python中通过关键字 class 实现类的定义: class ClassName(object): pass 获取成员变量:ClassName.变量名 修 ...
- typecho流程原理和插件机制浅析(第一弹)
typecho流程原理和插件机制浅析(第一弹) 兜兜 393 2014年03月28日 发布 推荐 5 推荐 收藏 24 收藏,3.5k 浏览 虽然新版本0.9在多次跳票后终于发布了,在漫长的等待里始终 ...
- 我的长大app开发教程第一弹:Fragment布局
在接下来的一段时间里我会发布一个相对连续的Android教程,这个教程会讲述我是如何从零开始开发“我的长大”这个Android应用. 在开始之前,我先来介绍一下“我的长大”:这是一个校园社交app,准 ...
- OO面向对象第一单元总结
OO面向对象第一单元总结(表达式求导) 写在前面: 魔鬼课程oo第一单元终于结束,当终究要落笔总结,竟不知从何写起…… 回首再去看第一次的作业,你会满足于那时的幸福,或许,这就是成长吧! 千言万语,一 ...
- Hadoop基础-MapReduce的工作原理第一弹
Hadoop基础-MapReduce的工作原理第一弹 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在本篇博客中,我们将深入学习Hadoop中的MapReduce工作机制,这些知识 ...
随机推荐
- JS中类或对象的定义说明
本篇文章主要是对JS中类或对象的定义进行说明介绍.我们知道,JS是面向对象的.谈到面向对象,就不可避免的要涉及类的概念.一般像c#,java这些强类型语言都有固定的定义类的语法.而JS的不同之处在于它 ...
- 前端开发HTML&css入门——盒子模型以及部分CSS样式
CSS处理网页时,它认为每个元素都包含在一个不可见的盒子里.• 为什么要想象成盒子呢?因为如果把所有的元素都想象成盒子,那么我们对网页的布局就相当于是摆放盒子.• 我们只需要将相应的盒子摆放到网页中相 ...
- 你真的了解iOS的深浅拷贝吗?
最近在简书看到了一篇关于iOS深浅拷贝的博客,下面做一下学习总结: 非集合类对象的copy和mutableCopy 非集合类对象指NSString.NSNumber.NSMutableString等对 ...
- 【串线篇】spring boot配置嵌入式servlet容器
SpringBoot默认使用Tomcat作为嵌入式的Servlet容器 问题? 一.如何定制和修改Servlet容器的相关配置 1.方法1修改和server有关的配置(ServerProperties ...
- Kettle日志级别
Kettle的日志级别LogLevel分为以下几个: Nothing 没有日志 不显示任何输出 Error 错误日志 仅仅显示错误信息 Minimal 最小日志 使用最小的日志 Basic 基本日志 ...
- windows 10 删除资源管理器导航栏 Creative Cloud Files
安装完Adobe的Photoshop.After Effects等软件后,资源管理器导航栏会出现让人讨厌的Creative Cloud Files目录,稍微修改注册表即可删除. 快捷键Windows ...
- vscode中执行gulp task的简便方法
本文重点是gulp在vscode中执行task任务的方法 如何像webstorm那样简便操作gulp 的task 第1步:安装node.下载地址:https://nodejs.org/zh-cn/ 检 ...
- php substr_count()函数 语法
php substr_count()函数 语法 作用:统计一个字符串,在另一个字符串中出现次数大理石量具 语法:substr_count(string,substring,start,length) ...
- 使用WebAPI流式传输大文件(在IIS上大于2GB)
这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数 下面直接贴代码吧,一些难懂的我大部分都加上注释了: 上传文件实体类: 看得 ...
- [USACO17DEC]Barn Painting (树形$dp$)
题目链接 Solution 比较简单的树形 \(dp\) . \(f[i][j]\) 代表 \(i\) 为根的子树 ,\(i\) 涂 \(j\) 号颜色的方案数. 转移很显然 : \[f[i][1]= ...