python面向对象学习第一周

 面向对象的思想
一个具体对象的属性方法,都有各个来源,来源于类,比如消化类,有各种各样的消化模式,人类的只是其中一种
另一种思想方法,类有各种属性方法,人类有很多的属性,一个人应该包括其中的属性,只是值上可能有不同,不同人群也有他们的特征属性和方法
    类是对象的抽象,但是类本身也是对象, 对象是一个类的实例.
类的属性:类变量,对象方法,类方法,静态方法(普通方法)
类变量:
类变量是定义在类中的一个常量,它表示这个类的对象共同拥有的属性
类变量可以为任意类型包括对象类型,类类型(一切皆对象),最好不要是自身的对象和类类型,避免递归
对象属性:类的对象特有的属性,一般在定义一个对象时需要设置它的属性值
第一个方法初始化方法 ___init__
定义一个对象时自动调用的一个方法,一般在这里就设置对象的属性的值, (self.shuxing = XXX) ,这个方法的调用者是这个类的对象,方法里面可以调用后面定义的方法. 对象的属性都是静态的值或对象,不包括方法
对象方法:
表示对象行为的方法
要用这个类的对象来调用,如果是类要额外传入一个对象来调用,调用自身的函数时要注意递归, 这里面可以调用和修改属性
类方法:
表示类对象的行为的方法
要用这个类来调用的方法 ,类的对象也可以调用(因为它可以通过对象来找到它的类)
静态方法:
一般不表示类或对象行为, 单纯计算,获得计算的常量的值
需要使用类或者对象来调用,
定义一个前面已有的方法,会调用后面的方法,类中方法间调用,和类外调用的方法要求是一样的,
装饰器,私有属性,私有方法,
装饰器有类装饰器和属性装饰器,本质都是通过函数调用实现装饰的效果
私有属性,方法
使用__命名的属性和方法,外部不能正常调用得到
类的继承
子类继承父类,仍然可以对它里面的属性进行修改, 它提高了代码的复用,降低了内存
子类可以通过和父类中的方法和属性设置相同的名字来实现对父类方法的重写和覆盖
重写 方法如果修改了对象属性,或者类变量,可能会照成其他的方法不能执行,或者正常执行
继承之中涉及到匿名属性和方法的继承,对它们的进行调用和修改要考虑的情况经常非常复杂,复杂到在这里要避开讨论,子类使用到了父类的匿名属性的方法叫魔术方法,可以通过一些方法避免这种情况
多继承,用的少,它继承了多个类的特性,如果类中的属性方法名全都不同,那就相当于把个类写入了一个类中.(初始化方法的名称是一样的)
如果其中有重叠部分,那情况会复杂很多
调用一个方法时,会有一定的顺序在父类中查找, 使用  类.mro()可以查看这个搜索路径,
调用方法如果在一个类中找到了就会停止搜索,调用该方法
子类中重写 父类方法,修改属性与单继承一至
面向对象的七个设计原则
原则一:(SRP:Single responsibility principle)单一职责原则又称单一功能原则,类被修改的几率很大,因此应该专注于单一的功能。如果你把多个功能放在同一个类中,功能之间就形成了关联,
原则二:开闭原则(OCP:Open Closed Principle)核心思想:对扩展开放,对修改关闭。即在设计一个模块的时候,应当使这个模
块可以在不被修改的前提下被扩展.
原则三:里氏替换原则(LSP:Liskov Substitution Principle)
子类应当可以替换父类并出现在父类能够出现的任何地方,子类要不能覆盖父类的属性和方法
原则四:依赖倒转原则(DIP:Dependence Inversion Principle)
高层模块不应该依赖低层模块,两者都应该依赖其抽象(抽象类或接口) ,抽象不应该依赖细节(具体实现),细节(具体实现)应该依赖抽象
原则五: 迪米特原则  迪米特原则要求尽量的封装,尽量的独立,尽量的使用低级别的访问修饰符。这是封装特性的典型体现。一个类如果暴露太多私用的方法和字段,会让调用者很茫然。并且会给类造成不必要的判断代码。所以,我们使用尽量低的访问修饰符,让外界不知道我们的内部。这也是面向对象的基本思路。这是迪米特原则的一个特性,无法了解类更多的私有信息。
原则六: 组合/聚合复用原则  此原则的含义是,如果只是达到代码复用的目的,尽量使用组合与聚合,而不是继承。这里需要解释一下,组合聚合只是引用其他的类的方法,而不会受引用的类的继承而改变血统。组合聚合复用原则的潜台词是:我只是用你的方法,我们不一定是同类。

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/88334

(0)
daishitongdaishitong
上一篇 2017-11-13 10:54
下一篇 2017-11-13 16:16

相关推荐

  • Bash的I/O重定向及管道

    每周更新的博客定时派送啦,本周与大家一起分享的是重定向和管道 首先了解一下 读入数据:Input 输出数据:Output 我们来看一下重定向:  >  覆盖重定向 上面图中 > 文件名     创建空文件 touch 文件名 创建空文件 这两种方法都可以创建一个新的文…

    2017-07-21
  • bonding

    boding制作        问题:一个网卡一个IP没有容错性     bonding是LINUX中将多网卡绑定虚拟成一块网卡,实现多网卡共同拥有一个IP,这项技术早在Sun和Cisco中被称为Trunking和Etherchannel技术。   …

    2017-03-22
  • linux计划任务

    任务计划的分类: 一次性的任务计划:只执行一次 周期性的任务计划:每隔一定的周期去做相同的事情 设置任务计划功能的工具:at和crontab at:专门处理一次性的计划任务 crontab:根据定义的周期信息,循环做一些事情 batch:系统自行选择空闲时间去执行此处指定的任务 At命令: 查看atd状态和启动atd服务及其配置文件路径: centos6:s…

    2017-09-09
  • iptables简单概念..

    iptables: 包过滤型的防火墙 Firewall:防火墙,隔离工具;工作于主机或网络边缘,对于进出本主机或本网络的报文根据事先定义的检查规则作匹配检测,对于能够被规则匹配到的报文作出相应处理的组件;    主机防火墙     网络防火墙   &…

    Linux干货 2017-06-19
  • LNAMP Shell 部署脚本

    LNAMP Shell 部署脚本 学习总结: 这个脚本,早期是出于对个人学习Shell的总结而写,应该有些年头了,目前也在一边学马哥视频的基础上陆续完善,10月初才完成LNAMP环境的分离式部署,并减少整个Shell脚本各部分的依赖关系。 我是网络班13期高级班的学员,因个人做了几年Linux运维,所以目前整个高级班的课程,我是跳着看了集群(LVS + Ke…

    Linux干货 2015-10-27
  • 用户相关文件简介

    2016/10/23 总结关于用户和组相关的配置文件 Linux系统主要有4个文件与用户和组的配置有关, 主要为/etc/passwd  /etc/shadow   /etc/group  /etc/gshadow 首先来解释一下什么是用户,什么是组 用户:      管理员用户&nbsp…

    Linux干货 2016-10-24