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

相关推荐

  • 初涉Linux基本要点概括(1)

    计算机,这里通常指可以储存程序的计算机,根据冯诺依曼体系,计算机组成部件包括控制单元(Control Unit)、算术逻辑单元(Arithmetic Logic Unit)、内存(Memory)、输入设备(Input)、输出设备(Output)。计算机通过输入的数据和指令,可以完成各种复杂的运算任务,小到文字处理、游戏、影音、大到卫星定位,火箭发射,人工智能…

    Linux干货 2016-09-26
  • 用户和组相关配置文件

    用户和组的配置文件都在/etc目录下          /etc/passwd;        内容格式:用户名;加密后密码影子(1#);UID;GID;注释;家目录,默认shell    …

    Linux干货 2016-10-23
  • FHS文件系统下个各目录功能

    FHS文件系统下个各目录功能 FHS文件系统的建立是为了让开发者和用户可以预测软件安装文件和文件夹的位置。对整个linux的文件系统系统做了以下的规范:     /bin:命令二进制文件的存放目录;     /boot:系统启动时一些文件存放的目录,包含引导linux的重要文件,…

    Linux干货 2016-10-18
  • Homework Week-10 CentOS启动相关及bash脚本编程

    1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情) 2、为运行于虚拟机上的CentOS 6添加一块新硬件,提供两个主分区;   (1) 为硬盘新建两个主分区;并为其安装grub;   (2) 为硬盘的第一个主分区提供内核和ramdisk文件; 为第二个分区提供rootfs;   (3) 为rootfs提供…

    Linux干货 2016-10-24
  • DevOps如何重构IT战略

    翻译: 至尊宝 原文: http://www.citeworld.com/article/2897738/development/how-devops-can-redefine-your-it-strategy.html?page=2   DevOps究竟是昙花一现还是你一直在寻找的竞争优势?我们咨询了一些专家,对于这种趋势他们的想法是什…

    Python干货 2015-03-26
  • Linux获取帮助的途径、history命令及文件系统结构

        在学习Linux的过程中,往往会遇到一些难以理解的问,这时我们就需要寻求帮助,下面是获取帮助的几个途径。 一、man(manual)手册(命令) 1、man手册介绍 (1)man手册是系统自带的联机帮助手册,善于利用man命令,可以帮我们解决遇到的大部分问题。 (2)man手册分为九个章节,每个章节是独立的。 章节1:表…

    Linux干货 2016-07-29