Python第17课(面向对象基础)    >>>思维导图>>>中二青年

面向对象编程思想OOP

什么是面向对象

面向对象是一种编程思想,是前辈们总结出的经验,指导程序员如何编写出更好的程序,核心是对象,程序就是一系列对象的集合,程序员负责调度控制这些对象来交互着完成任务案例1 把大象装进冰箱?
面向过程:
1.打开冰箱
2.装入大象
3.关闭冰箱
面向对象:
找个具备装大象的技能的对象在面向对象中程序员的角度发生改变,从具体的操作者变成了指挥者
强调:对象不是凭空产生的,需要我们自己设计案例2 西天取经如来有一堆破书要传出去,他没有自己干,而是找了五个对象帮他去干, 如来只要负责控制调度的对象即可,如果某个对象发生变化,也不会影响其他的对象 , 扩展性案例3 曹操吟诗喝酒吃肉,人生真爽喝酒吃肉,人生几何对酒当歌,人生几何

面向对象三大优点

1.扩展性2.灵活性3.重用性

缺点

1.程序的复杂度提高了
2.无法准确预知结果

使用场景:

对扩展性要求较高,通常是直接面向用户的,例如:QQ,微信

面向过程编程思想

关注的核心是过程,过程是就是一步一步的执行步骤,既先干啥在干啥
优点:逻辑清晰 , 复杂问题简单化,流程化
缺点: 扩展性差,可维护性差
使用场景:对扩展性要求较低的程序例如:系统内核,git,计算器
记住:不是所有程序都要面向对象,得分析具体需求

类和对象

:即类型,类别,是一种抽象概念,是一系列具备相同特征和相同行的对象的集合

对象:就是具体存在的某个事物,具备自己的特征和行为,对象就是特征和技能的结合体

类和对象的关系

类包含一系列对象,对象属于某个类在生活中是先有对象再有类,而在程序中是先有类才能有对象,我们必须先告诉计算机这类的对象有什么特征有什么行为总结出一个结论:在使用面向对象编程时,第一步就是思考需要什么样的对象,对象具备什么样的特征和行为,从而根据 这些信息总结出需要的类型

创建类和对象

定义类的语法

class 类的名称:# 类中的内容 描述属性和技能 #描述属性用变量#描述行为用函数 #类名称 书写规范  首先是见名知意 名称是大驼峰命名法
#驼峰就是单词首字母大写 , 大驼峰是第一个字母大写,小驼峰是第一个字母小写

创建对象的语法

class Person:pass#创建对象
p = Person()

属性的写法

属性可以写在类中
类中的属性,是所有对象公共的 也可以写在对象中
对象中的属性,是每个对象独特的(不一样的)如果类中和对象中存在同样的属性,先访问对象 如果没有在访问类

练习: 描述一个老师类 需要包含 一个公共属性和 一个独特的属性

class Teacher:school = "oldboy"t1 = Teacher()
t1.name = "jack"
t1.age = 28

属性的增删改查

增加属性
对象变量名称.属性名称 = 属性值删除属性
del 对象的变量名称.属性名称 修改
对象.属性 = 新的值 查看属性  访问的是对象的所有属性
print(对象.__dict__)访问对象的类信息
print(对象.__class__)

init方法

叫做初始化方法,本质上就是一个函数特点1: 当实例化 对象时,会自动执行init方法特点2:会自动将对象作为第一个参数传入,参数名称位self ,self可以是别的名字,但不建议改功能:用户给对象赋初始值

练习:创建一个类具备几个属性,通过初始化方法来给他设置属性

class Dog:def __init__(self,kind,color,age):self.kind = kindself.color = colorself.age = aged1 = Dog("二哈","黑白",1)
d1 = Dog("泰迪","棕色",2)# 注意:该函数不能有任何返回值/.... 只能是None  规定如此..

对象的精髓就是讲数据和处理数据的函数整合到一起 ,这样一来拿到一个对象就同时拿到了需要处理的数据以及处理数据的函数

对象的绑定方法

默认情况下类中的方法都是对象绑定方法
其特殊之处在于,
当使用对象调用该函数时会自动传入对象本身,作为第一个参数
当使用类名来调用时他就是一个普通函数,有几个参数就得传几个参数

练习:写一个学生类,具备一个打招呼的技能 要能输出自己的名字信息

class Student:def __init__(self,name):self.name = namedef say_hi(self):print("hello my name is %s" % self.name)

类的绑定方法

类绑定方法用@classmethod来装饰
特殊之处:不管用类还是对象调用,都会自动传入类本身,作为第一个参数
什么时候绑定给对象:当函数逻辑需要访问对象中的数据时
什么时候绑定给类:当函数逻辑需要访问类中的数据时

非绑定方法

或叫做静态方法,就是即不需访问类的数据,.也不需要访问对象的数据,不常用

语法:@staticmethod

转载于:https://www.cnblogs.com/renvip/p/11239449.html

Python第十七课(面向对象基础)相关推荐

  1. python六十七课——网络编程(基础知识了解)

    网络编程: 什么是网络编程? 网络:它是一种隐形的媒介:可以将多台计算机使用(将它们连接到一起) 网络编程:将多台计算机之间可以相互通信了(做数据交互) 一旦涉及到网络编程,划分为两个方向存在,一方我 ...

  2. 跟着王进老师学开发Python篇第四季:面向对象基础篇-王进-专题视频课程

    跟着王进老师学开发Python篇第四季:面向对象基础篇-772人已学习 课程介绍         本季课程为Python面向对象基础篇,内容包含:面向对象的介绍.创建类和实例化.实例变量和实例方法.类 ...

  3. python新手入门课_Python基础视频12集入门课程

    视频+笔记:├─1简介与实验环境配置9│ Python基础.pptx│ Python简介.pptx│ 实验环境配置2-1.pdf│ 2.1简介与实验环境配置.mp4│ 请简述 Python 语言与 C ...

  4. 2021小白Python学习记录Day7 面向对象基础(上) (定义类和对象、__init__传参、self、魔术方法)

    目录 一.定义类和对象 1.定义类 2.创建一个对象 2.1 创建一个实例对象并调用实例方法 2.2 创建另一个实例对象: 2.3 添加实例属性 二.__init__(self) 1. __init_ ...

  5. python网络编程知识_python六十七课——网络编程(基础知识了解)

    网络编程: 什么是网络编程? 网络:它是一种隐形的媒介:可以将多台计算机使用(将它们连接到一起) 网络编程:将多台计算机之间可以相互通信了(做数据交互) 一旦涉及到网络编程,划分为两个方向存在,一方我 ...

  6. Python面向对象基础示例_创建对象

    Python面向对象基础示例_创建对象 python是面向对象的语言,你可以很轻松的创建一个类和对象.本书代码源自<<Python 3 Object-Oriented Programmin ...

  7. python编程基础_月隐学python第2课

    python编程基础_月隐学python第2课 学习目标 掌握变量的输入和输出 掌握数据类型的基本概念 掌握算数运算 1.变量的输入和输出 1.1 变量输入 使用input输入 input用于输入数据 ...

  8. Python基础入门_5面向对象基础

    Python 基础入门前四篇: Python 基础入门–简介和环境配置 Python基础入门_2基础语法和变量类型 Python基础入门_3条件语句和迭代循环 Python基础入门_4函数 第五篇主要 ...

  9. python和对象复习_python 面向对象基础和高级复习

    面向对象基础 面向对象编程 面向过程编程:类似于工厂的流水线 优点:逻辑清晰 缺点:扩展性差 面向对象编程:核心是对象二字,对象属性和方法的集合体,面向对象编程就是一堆对象交互 优点:扩展性强 缺点: ...

最新文章

  1. Linux 配置ip地址
  2. oracle中or会使索引,为何查询条件中多了 OR 选项,索引就走全扫描?
  3. git.exe init#timeout = 10错误:克隆远程repo'origin'时出错hudson.plugins.git
  4. 那些年的UC人力外包扯淡
  5. Java基础__Integer类型中的自动装箱
  6. mysql 视图没主键,mysql创建视图后打开提示没有主键,mysql视图
  7. python运行需要联网吗_基于python分析你的上网行为 看看你平时上网都在干嘛
  8. 系列学习 Gateway 之第 1 篇 —— SpringCloud Gateway 简介,Gateway 入门实例
  9. linux上多个CUDA切换使用(小白教程)
  10. 微信小程序对接串口摄像头
  11. 第五节:通信之WLAN(MAC地址)
  12. 浏览器缓存机制,强缓存,弱缓存
  13. Google 工程主管:AIGC 将在三年内终结编程!
  14. Git暂存区有什么用
  15. C 语言实现面向对象编程
  16. 计算机与小学教学联系论文,湖南自考本科论文从小学计算机教学实践谈学生“主体性”的发展 - 湖南自考生网...
  17. IDEA 配置 JDK 源码
  18. Java程序设计基础【2】
  19. 什么是服务器托管?服务器托管和虚拟主机的区别
  20. 房天下APP竞品分析

热门文章

  1. 十五、详述 IntelliJ IDEA 插件的安装及使用方法
  2. 多态方法调用的解析和分派
  3. leetcode练习——栈(1)
  4. Metal日记:使用步骤指南
  5. Springsecurity之AuthenticationProvider
  6. Spring Cloud Edgware新特性之八:Zuul回退的改进
  7. 【Foreign】采蘑菇 [点分治]
  8. 算法题:判断字符串是否为 ipv4 地址
  9. Nodejs从小工到专家系列(一)
  10. 单独一台机器测试Open×××加密隧道的问题和解决