day20 面向对象编程

面向对象编程 oop

什么是面向对象:

它是一种编程思想,是前辈总结出来的经验,知道程序员如何更好的编写程序,

核心是对象,程序就是一系列对象的集合,程序员通过负责调度这些对象让他们交互完成任务

相对于面向流程,就像流水线一样,亲自把制作手机的流程分成很多个小步骤,一一实现

面向对象,就像找到能管理流水线的人,让他负责流水线的运作

案例: 把大象装进冰箱?

面向过程:

1.拿起大象

2.打开冰箱

3.装入大象

4.关闭冰箱

面向对象:

找到具备装大象技能的对象,装入大象

从面向过程到面向对象,程序员实现从一线流水工人到选拔流水工人的管理层进化,但要说明的是对象不是凭空产生的,需要我们自己先设计,后调用.

其它案例:

西天取经:一个对象发生变化,并不影响其它对象,拓展性

曹操吟诗:对象可以重复的使用

面向对象的优缺点:

三大优点:

1.扩展性,更方便的加入其它功能,QQ,微信

2.灵活性,可以随意的替换,西天取经

3.重用性,活字印刷相对于竹简可以重复利用,曹操吟诗

两大缺点:

1.程序的复杂性提高,需要先定义一个个对象,之后再来调用,复杂性大幅提高

2.无法准确地预知结果,打游戏你很难知道哪个英雄拿到最后的胜利点

面向过程的优缺点:

关注的核心是流程,过程就是一步步执行流程的步骤,先做什么在做什么

优点:逻辑清晰,将复杂问题进行拆解简单化\流程化

缺点:扩展性差,可维护性差

使用场景:

面向流程一般面向程序员和系统硬件的程序,执行流程比较固定,对拓展性要求较低的,系统内核,计算器等

面向对象:直接面对终端用户,用户需求不断变化,所以对拓展性要求高,方便增删改查的程序,比如QQ,微信的

根据不同的场景使用最合适的编程方式

 

类和对象

这个是oop(面向对象)中最核心的两个概念

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

对象

就是一个实实在在的具体的某个事物,具备自己的特征和行为

对象就是特征和行为的结合体

 

类和对象的关系

类里面包含一系列的对象,对象属于某一个类

在生活中是先后对象后有类,而在程序中确实相反的,我们需要先定义类,然后在再定义对象,因为我们需要先告诉计算机这类的对象都有什么共同的特征和行为

总述:在使用面对对象编程时,第一步是思考需要什么样的对象,对象具备什么样的特征和技能,从而根据这些信息总结出需要的类型

 

创建类与对象

定义类的语法

class 类的名称:
   # 类中的内容 描述属性和技能
   # 描述属性用变量
   # 描述技能用函数

# 类命名 书写规范 首先是见名知意 名称用大驼峰命名法
# 驼峰就是单词的首字母大写
class Student:
   pass


stu = Student

print(stu)  # <class '__main__.Student'>
属性可以写在类中,类中的属性,是所有对象共用的
属性也可以写在对象中,对象中的属性,是每个对象独特的(不一样的)

如果类和对象中,有同样的属性,先访问对象,如果没有再访问类

# 描述一个老师(包含,一个公共属性和一个独特属性)

class Teacher:
   school = 'oldboy'


t1 = Teacher()
t1.name = 'ryan'
t1.age = 18
增加属性
对象变量名称.属性名称 = 属性值

删除属性
del 对象的变量名称.属性名称

修改
对象变量名.属性名 = 新属性值

查看属性:所有属性\类信息
print(对象.__dict__)   所有属性
print(对象.__class__)  访问类信息

print(Teacher.__dict__)
# {'__module__': '__main__', 'school': 'oldboy', '__
# dict__': <attribute '__dict__' of 'Teacher' objects>,
# '__weakref__': <attribute '__weakref__' of 'Teacher' objects>,
# '__doc__': None}

print(Teacher.__class__)  # <class 'type'>
class Dog:

   def __init__(self, kind, color, age):
       self.kind = kind
       self.color = color
       self.age = age


d1 = Dog('牧羊犬', '黄白', '2')
d2 = Dog('哈士奇', '黑白', '1')
d3 = Dog('泰迪犬', '棕黄', '1')


# 注意:这个函数不能有任何返回值,只能是None,规定如此..
class Student:
   school = "oldboy"

   def __init__(self, name):
       self.name = name

   def say_hi(self):
       print(f'hi,my name is {self.name}.')


stu = Student('ryan')
stu.say_hi()  # hi,my name is ryan.

非绑定方法不重要

7.绑定方法与非绑定方法

6.初始化方法

5.属性的查找顺序

4.如何设计属性

3.如何创建类和对象

2.类和对象的概念

对比,面向过程的优缺点 以及使用场景

1.面向对象的概念

今日内容回顾:

 

 

 

get是从文件中获取对象

save是将对象存储到文件中

例子:为学生类添加一个save方法 一个get方法

 

一般不常用,不如直接在外面定义一个函数

语法:@staticmethod

或者叫做静态方法,就是不需要类和对象的数据时

非绑定方法

函数逻辑需要访问对象或者类中的数据时,就绑定给对象或者类

特殊之处:不管用类还是对象调用,都会自动传入类本身,作为第一个参数

类绑定方法用@classmethod来装饰

类的绑定方法

而使用类名来调用,它就是一个普通函数,有几个参数传递就得传几个

使用对象调用该函数时,会自动传入对象本身,作为第一个参数

默认的类中使用的方法都是对象的绑定方法,特殊的地方就是:

对象的绑定方法

 

对象的精髓就在于将获取数据的变量名和处理数据的函数功能融合在一起,所以我们通过一个对象就获得数据并处理数据.

案例:狗的类别

功能:用户给对象赋初始值

特点2:会自动将对象作为第一个参数传入,参数名称为self(附:我们可以吧self改成其他名字,但是不建议改)

特点1:当实例化对象时,会自动执行init方法

init叫做初始化方法,本质也是一个函数

init方法

属性的增删改查

属性的写法

创建对象的语法

转载于:https://www.cnblogs.com/Ryan-Yuan/p/11240541.html

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

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

相关文章

3.1. _3. 覆盖与交换

覆盖技术 交换技术 知识回顾

清华大学精密仪器系:智能传感器太重要了!

来源&#xff1a;科技导报整理&#xff1a;由动感传感论文原标题&#xff1a;《智能传感器技术的研究进展及应用展望》作者&#xff1a;清华大学精密仪器系 | 尤政本文是来自清华大学精密仪器系的一篇关于智能传感器技术研究和发展探索的论文。随着智能时代的到来&#xff0c;各…

PHP 将Base64图片保存到 Sae storage

<?php$file_dirtu/.date("Y/m/d")./;$fileNamecreate_guid();$storage new SaeStorage();$domain uploads;$destFileName $file_dir.$fileName;//$srcFileName $tempFile;$attr array(encoding>gzip);//保存base64字符串为图片//匹配出图片的格式$base64…

3.1_ 4连续分配管理方式

3.1_ 4连续分配管理方式 文章目录3.1_ 4连续分配管理方式知识总览单一连续分配固定分区分配动态分区分配知识总览 单一连续分配 固定分区分配 动态分区分配

《Engineering》评选2021年全球十大工程成就 | 中国工程院院刊

来源&#xff1a;风云之声“2021全球十大工程成就”发布工程是现实的、直接的生产力&#xff0c;是人类改变世界的重要活动。古往今来&#xff0c;人类创造了众多令人惊叹的工程成就&#xff0c;持续带动着经济发展和社会的深刻变革&#xff0c;推动人类文明迈上更高的台阶。为…

4.3-沛县欢乐多(DHCP,ARP,ICMP协议)

4.3-沛县欢乐多&#xff08;DHCP&#xff0c;ARP&#xff0c;ICMP协议&#xff09; 开头想说的话&#xff0c;这篇文章介绍DHCP&#xff0c;ARP&#xff0c;ICMP&#xff0c;用故事的方式给你讲述一些计算机网络原理&#xff0c;希望能够对你有所帮助&#xff0c;别担心&#x…

虎年前迎来脑科学新锐:脑虎科技的创生故事

来源&#xff1a;脑极体1月11日&#xff0c;国内脑科学创业领域迎来了一家引人瞩目的公司——脑虎科技。这家企业聚焦全球范围内非常稀缺的侵入式脑机接口设备研发&#xff0c;依托中科院科学家团队&#xff0c;拥有获得去年世界人工智能大会最高奖的原创自主核心技术&#xff…

[导入]流氓软件案落定 “很棒小秘书”终审败诉

阅读全文 类别&#xff1a;分享天地 查看评论文章来源:http://hi.baidu.com/andyfurong/blog/item/14be800fe70425e9aa645771.html转载于:https://www.cnblogs.com/andyfurong/archive/2008/03/25/1121492.html

把「醉汉游走」引入「三体问题」,以色列学者新思路登上物理学顶刊

来源&#xff1a;机器之心编辑&#xff1a;nhyilin两位以色列物理学者采用了名为「醉汉游走」的随机游走模式&#xff0c;为「三体问题」引入了新思路。当牛顿第一次发现两个物体之间通过引力相互作用时&#xff0c;他就已经破解了物质在广阔时空中移动和相互作用的密码。然而这…

3.1_ 5_动态分区分配算法

3.1_ 5_动态分区分配算法 文章目录3.1_ 5_动态分区分配算法知识总览首次适应算法最佳适应算法最坏适应算法邻近适应算法知识总览 首次适应算法 最佳适应算法 最坏适应算法 邻近适应算法

db2 查杀死锁进程

db2 查杀死锁进程db2 get snapshot for locks on <dbname> (需要snapshot的访问权限)db2 list applicationsdb2 "force application(8)"在snapshot的第四段显示应用程序句柄为8的应用有锁存在&#xff0c;在其相应的锁定列表中显示锁定的表是US_CATALOG。如果…

「强化学习可解释性」最新2022综述

来源&#xff1a;图灵人工智能强化学习是一种从试错过程中发现最优行为策略的技术&#xff0c;已经成为解决环境交互问题的通用方法.然而&#xff0c;作为一类机器学习算法&#xff0c;强化学习也面临着机器学习领域的公共难题&#xff0c;即难以被人理解.缺乏可解释性限制了强…

3.1_ 6_ 基本分页存储管理的基本概念

3.1_ 6_ 基本分页存储管理的基本概念 文章目录3.1_ 6_ 基本分页存储管理的基本概念思维导图思考:连续分配方式的缺点把“固定分区分配”改造为“非连续 ”分配版本分页存储管理的基本概念思考:如何实现地址的转换逻辑地址结构页表知识回顾思维导图 思考:连续分配方式的缺点 把“…

jar包部署到window系统服务器的办法

1&#xff1a;把jar包和lib(如果打包出现有lib目录)放在同级目录 2&#xff1a;windows服务器安装jdk等 3&#xff1a;通过bat批处理命令或者 cmd命令启动jar包,其中之一就可以 3.1&#xff1a;bat命令如下&#xff1a; echo off start /b java -jar poggyio-kwg-sap-syn…

瞭望丨光子芯片能否让中国“换道超车”

第四届进博会技术装备展区集成电路专区现场&#xff08;2021年11月5日摄&#xff09; 张建松来源&#xff1a;新华社新闻摄&#xff1a;瞭望文&#xff1a;米磊 ◇ 信息时代的基础设施是电子芯片&#xff08;集成电路&#xff09;&#xff0c;人工智能时代将更多地依托光子芯片…

3.2_ 1_ 虚拟内存的基本概念

3.2_ 1_ 虚拟内存的基本概念 文章目录3.2_ 1_ 虚拟内存的基本概念知识总览传统存储管理方式的特征、缺点局部性原理虛拟内存的定义和特征如何实现虚拟内存技术知识回顾知识总览 传统存储管理方式的特征、缺点 局部性原理 虛拟内存的定义和特征 如何实现虚拟内存技术 知识回顾

day21 面向对象之继承和组合

继承 组合 OOP的三大特征之一:封装,继承,多态 继承 什么是继承&#xff1f; # 继承是一种关系,描述两个对象之间,什么是什么的关系例如&#xff1a;麦兜,佩奇,猪刚鬣 都是猪啊, # 在程序中,继承描述的是类和类之间的关系例如&#xff1a;a继承了b, a就能直接使用b已经存在的方法…

3.2_ 2_ 请求分页管理方式

3.2_ 2_ 请求分页管理方式 文章目录3.2_ 2_ 请求分页管理方式知识总览页表机制缺页中断机构地址变换机构知识回顾知识总览 页表机制 缺页中断机构 地址变换机构 知识回顾

安装 ssh 的公开密匙到 iPhone 上

1). 在Mac的终端上产生密匙 ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/xxxx/.ssh/id_rsa): Created directory /home/xxxx/.ssh. Enter passphrase (empty for no passphrase): xxx Enter same passphrase again…

[KMP]一本通(http://ybt.ssoier.cn:8088) 1698:字符串匹配

字符串匹配 【题目描述】 对于一个字符集大小为C的字符串pp&#xff0c;可以将任意两个字符在p中的位置进行互换&#xff0c;例如p12321&#xff0c;交换1、21、2得到21312&#xff0c;交换1、4得到42324&#xff0c;交换可以进行任意次。若交换后p变成了字符串q&#xff0c;则…