Python第十七课(面向对象基础)

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

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

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

相关文章

USACO 6.1.3 Cow XOR

题目大意: 给出一个数列,求最大区间异或和。异或和相同时取终点最靠前的,仍相同取最短的。简单题解:先求出前缀和。对每个数,将其前一项的前缀和插入0-1树中。然后在该树中,从高位到低位(贪心思…

内核源码——C语言阶段的start_kernel函数

以下内容源于朱有鹏嵌入式课程的学习,如有侵权请告知删除。 前言 1、内容总结 C语言阶段的start_kernel函数位于内核源码/init/main.c文件,主要完成以下内容: (1)打印一些输出信息。 (2)初始化…

Excel2007数据透视表学习(四)改变数据透视表布局

通过在【数据透视表字段列表】对话框内将【列标签】、【行标签】和【报表筛选】区域的字段转换即可创建不同分析角度的数据透视表。 如果还是习惯Excel2003版本字段拖拽方式创建数据透视表,可以在数据透视表中单击鼠标右键→【数据透视表选项】→【显示】→勾选【…

经典基础算法之面试题(系列一)(转)

1. 打靶问题的递归解法 Technorati 标记: 递归算法,字典法,二分法,打靶问题,日期问题,求幂,多项式求值伦敦奥运会火热进行中,让我们来看个打靶的问题:一个射击运动员打靶,靶一共有10环,求连开10枪打中90环的可能行有多少种&#x…

2013年11月份我国网络不良与垃圾短信息分析报告

IDC评述网(idcps.com)12月17日报道:近日,12321网络不良与垃圾信息举报受理中心最新播报了11月份我国不良与垃圾短信息发送情况。根据报告显示,11月份垃圾邮件发送IP地址与上月大体相同,主要集中在湖北、北京…

字节对齐的写法.

What I write, what I lose. 之前看到Nginx的code的时候. 看到一个关于字节对齐的实现. 突然想起之前去面试的时候, 别人让我实现一个4字节对齐. 当然奇怪别人怎么问这种问题. 这时候开始有一点点体会. 以下将个人总结的几种写法写上. #define common_align1(x) ((x/4((x%4)?…

SCOM Rule 介绍 [SCOM中文系列之六]

SCOM的Rule主要用来收集数据,我们看到的EventView,PerformanceData,Report所需数据大部分都是通过Rule来收集的。 SCOM Rule的基础结构是触发指定的条件,就执行指定的动作。这个我们通过Rule的属性界面可以看的清楚点:…

init进程的详解

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 参考博客 内核源码——C语言阶段的start_kernel函数_天糊土的博客-CSDN博客 分析根文件系统中的/linuxrc文件_天糊土的博客-CSDN博客 linux内核sys_mount()分析_kai_ding的博客-CSDN博客_sys_mount…

跟着石头哥哥学cocos2d-x(四)--cocos2dx中的动画以及TexturePacker使用

2019独角兽企业重金招聘Python工程师标准>>> 之前向Andreas Loew申请了一枚TexturePacker注册码,很快都下来了,作为回报我打算还是写一篇关于TexturePacker的使用博客吧,有兴趣的可以在这里申请密钥,http://www.codeandweb.com&am…

【C/C++学习】之七、指向函数的指针

什么是指向函数的指针 函数指针是指向函数的指针变量,不是指向对象的指针!函数指针本身应该是“指针变量”; “在C语言中,函数本身不是变量,但可以定义指向函数的指针,这种指针可以被赋值、存放于数组之中&…

头像和Karma汽车

Powered by Zoundry RavenTechnorati : Karma, 头像, 汽车 Del.icio.us : Karma, 头像, 汽车 转载于:https://www.cnblogs.com/bsmagic/archive/2008/08/06/1261858.html

内核中架构相关代码简介

以下内容源于朱友鹏《物联网大讲堂》课程的学习,如有侵权,请告知删除。 1、内核代码基本分为3块 (1)arch:本目录下全是cpu架构有关的代码 (2)drivers:本目录下全是硬件的驱动 &am…

All-In-One Code Framework [一站式示例代码库] 【转】

All-In-One Code Framework [一站式示例代码库]2010 对一站式示例代码库,对奋战在一站式示例代码库上的每一位工程师来说都是不同寻常的一年。 在我们共同努力和开发社区的支持下,该项目从一年前的草根雏形,成长为CodePlex排名前三&#xff0…

Repeater的嵌套

今天做了一个小项目学习一下&#xff0c;是关于两个Repeater的嵌套使用的&#xff1a; 关于Repeater的嵌套&#xff0c;关键在于数据项的绑定。 首先&#xff0c;外Repeater需要设置OnItemDataBound事件&#xff0c;在事件中添加子Repeater的数据项绑定&#xff1b; <asp:Re…

Ioc容器Autofac介绍

Autofac是轻量级的开源Ioc容器&#xff0c;在这里可以下载http://code.google.com/p/autofac/。如果你用过其他的Ioc容器&#xff0c;那么学习Autofac使用也会比较容易&#xff0c;下面将通过一些例子来讲解其用法。 先看一个例子&#xff1a; 首先新建一个工程&#xff0c;添加…

汇编指令的学习2——常用的ARM指令

一、常用ARM指令1&#xff1a;数据处理指令 &#xff08;1&#xff09;数据传输指令 mov mvn&#xff08;源目标按位取反后赋给目标&#xff09; &#xff08;2&#xff09;算术指令 add sub rsb adc sbc rsc &#xff08;3&#xff09;逻辑指令 and orr eor …

cocos2dx 3.4 截图代码

Size size Director::sharedDirector()->getWinSize(); //定义一个屏幕大小的渲染纹理 RenderTexture* pScreen RenderTexture::create(size.width,size.height, kCCTexture2DPixelFormat_RGBA8888); log("-------log1---");//获得当前的场景指针 Scene* pC…

NSURLRequest详解IOS最基础的api

http://blog.csdn.net/bl1988530/article/details/6590099转载于:https://www.cnblogs.com/qiqibo/archive/2012/08/22/2650996.html

正则表达式 Mather类的使用

Matcher类: 使用Matcher类,最重要的一个概念必须清楚:组(Group),在正则表达式中 ()定义了一个组,由于一个正则表达式可以包含很多的组,所以下面先说说怎么划分组的, 以及这些组和组的下标怎么对应的. 下面我们看看一个小例子,来说明这个问题 \w(\d\d)(\w) 这个正则表达式有三…

ARM协处理器的汇编指令

以下内容源于网络资源的学习与整理&#xff0c;如有侵权请告知删除。 一、协处理器的简介 协处理器&#xff08;cp&#xff0c;coprocessor&#xff09;是SoC内部的处理单元&#xff0c;用来协助主CPU实现一些特定的功能&#xff0c;比如MMU、cache、TLB等内容。ARM在设计上支…