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
下一篇 2017-11-13

相关推荐

  • lamp+nfs搭建wordpress

    一、前言 lamp是大多上公司常用的架构,本文将针对分离式的lamp+nfs来搭建一个简单的wordpress网站。 二、架构图 三、基本实现过程 3.1:dns搭建 由于这这是一个实验,故使用yum搭建dns服务器 yum install -y bind 配置如下 dns主配置文件 dns辅助配置文件 zone文件 对所有服务…

    Linux干货 2015-10-16
  • DNS转发、ACL以及VIEW

    DNS全称是Domain Name System的简称,即域名系统。因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP/TCP协议之上,使用端口号53。 DNS转发、ACL以及VIEW…

    Linux干货 2016-12-08
  • N25-第四周

    复制/etc/ske1目录为/home/tuser1,要求/home/tuser及其内部文件的属组和其他用户均没有任何访问权限。 [root@localhost ~]# cp -a /etc/skel/ /home/tuser1[root@localhost ~]# ll -d /home/tuser1/drwxr-xr-x. 2 root root 59 …

    Linux干货 2016-12-25
  • 用户和组管理 第三周

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 who | cut -d' ' -f1 | sort -u who:查看当前已经登陆的所有用户的详细信息 cut -d ' ' -f1:以空格为界显示每行第一列 sort -u :在输出行中去除重复行。 2、取出最后登录到当前系…

    Linux干货 2017-02-13
  • Linux中的文本处理工具

    本章内容:   一、各种文本工具来查看、分析,统计文本文件   二、grep   三、正则表达式   四、扩展正则表达式   五、Sed 具体内容如下: 一、抽取文本的工具:      文件内容:less和cat      文件截取:head和tai…

    Linux干货 2016-08-08
  • 自定义命令提示符

     命令提示符的格式放在变量PS1中         命令提示符特殊字符定义             \u  当前用户      &…

    Linux干货 2017-05-02