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 如何检查类与对象的所有成员

  • 可以通过默认内置变量检查
  1. 检查类的所有成员
class_name.__dict__			# dict前后各有两个下划线
  1. 检查对象的所有成员
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 面向对象 第一弹的更多相关文章

  1. [Python3] 022 面向对象 第二弹

    目录 6. 面向对象的三大特性 6.1 封装 6.1.1 私有 private 6.1.2 受保护 protected 6.1.3 公开 public 6.2 继承 6.2.1 继承的概念与作用 6. ...

  2. [Python3] 023 面向对象 第三弹

    目录 7. 类相关函数 8. 类的成员描述符(属性) 9. 类的内置属性 10. 类的常用魔术方法 10.1 操作类 10.2 描述符 10.3 属性操作 10.4 运算分类相关魔术方法 接上一篇 [ ...

  3. [Python3] 024 面向对象 第四弹

    目录 11. 类和对象的三种方法 12. 抽象类 12.1 抽象方法 12.2 抽象类 12.3 抽象类的使用 13. 自定义类 接上一篇 [Python3] 023 面向对象 第三弹 11. 类和对 ...

  4. Java基础-面向对象第一特性之封装(Encapsulation)

    Java基础-面向对象第一特性之封装(Encapsulation) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.理解什么是面向过程和面向对象 面向过程与面向对象都是我们编程中 ...

  5. Python3中面向对象 OOP

    Python3中面向对象 OOP 定义: python中通过关键字 class 实现类的定义: class ClassName(object): pass 获取成员变量:ClassName.变量名 修 ...

  6. typecho流程原理和插件机制浅析(第一弹)

    typecho流程原理和插件机制浅析(第一弹) 兜兜 393 2014年03月28日 发布 推荐 5 推荐 收藏 24 收藏,3.5k 浏览 虽然新版本0.9在多次跳票后终于发布了,在漫长的等待里始终 ...

  7. 我的长大app开发教程第一弹:Fragment布局

    在接下来的一段时间里我会发布一个相对连续的Android教程,这个教程会讲述我是如何从零开始开发“我的长大”这个Android应用. 在开始之前,我先来介绍一下“我的长大”:这是一个校园社交app,准 ...

  8. OO面向对象第一单元总结

    OO面向对象第一单元总结(表达式求导) 写在前面: 魔鬼课程oo第一单元终于结束,当终究要落笔总结,竟不知从何写起…… 回首再去看第一次的作业,你会满足于那时的幸福,或许,这就是成长吧! 千言万语,一 ...

  9. Hadoop基础-MapReduce的工作原理第一弹

    Hadoop基础-MapReduce的工作原理第一弹 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在本篇博客中,我们将深入学习Hadoop中的MapReduce工作机制,这些知识 ...

随机推荐

  1. kali优化配置(3)--工具箱

    1.netcat 收集信息.Telnet/banner.传输文本信息.连接服务器端口. *通过IP,连接服务器端口: *信息通信: *重定向符号:> (e.g:>>ps.txt:重定 ...

  2. WEB服务动静结合

    基本介绍 1)WEB服务仅能处理静态请求,如果处理动态请求则需要对应的动态资源服务软件,即:应用程序服务软件 2)常见的应用服务软件有:PHP.Java.Python等 3)问题:WEB服务如何与外部 ...

  3. python的type和object

    在python中一切皆对象,这是个用python的人都知道的概念,以int举例,比如a=2,type下: 发现他的type是int,在python中type就是类,所以a是类int的一个对象,实例是类 ...

  4. MYSQL中IN与EXISTS的区别

    在MYSQL的连表查询中,最好是遵循‘小表驱动大表的原则’ 一.IN与EXISTS的区别1.IN查询分析SELECT   *  FROM A WHERE id IN (SELECT id FROM B ...

  5. [sqlmap源码阅读] 数据库识别

    通过网页返回的数据库错误信息识别网站所有数据库类型,用到的正则表达式及支持识别的数据库类型,这些信息以xml文件的形式存在,使用 sax 解析xml.

  6. html 头部设置

    https://juejin.im/post/5a4ae29b6fb9a04504083cac <head> <meta charset="UTF-8"> ...

  7. k8s+jenkins

    1 server 的port , targetport, nodeport的区别 targetport为容器的暴露端口,为最后端的端口 port可以理解为pod的端口,pod是容器的外层,该端口可以在 ...

  8. 前端面试题:CSS实现水平垂直居中

    这是一个挺常见的前端面试题,但是没有做过总结.有的时候可能会使用完了,很长一段时间不去使用,会慢慢忘记.所以,温故而知新,还是很有必要的. 一.绝对定位元素的居中实现 这一种工作中用的应该是最多的,兼 ...

  9. 032:DTL常用过滤器(1)

    为什么需要过滤器: 在DTL中,不支持函数的调用形式‘()’,因此不能给函数传递参数,这将有很大的局限性:而过滤器其实就是一个函数,可以对需要处理的参数进行处理,并且还可以额外接受一个参数(也就是说: ...

  10. 持续优化云原生体验,阿里云在Serverless容器与多云上的探索

    近日,阿里云宣布推出Serverless Kubernetes服务此举意在降低容器技术的使用门槛.简化容器平台运维.并同时发布阿里云服务对Open Service Broker API标准支持,通过一 ...