面向对象简单介绍

面向对象简单介绍

面向对象
类class:属性和方法的集合
对象:类的具象,是一个实体
面向对象三要素:
1、封装:将数据和操作组装到一起(组装),
隐藏数据:对外只暴露一些接口,通过接口访问对象。
2、继承:复用,多继承少修改,OCP(Open-closed Principle)
3、多态:
定义:class MyClass
类的定义就会产生一个类对象,类定义中的变量和方法都是类的属性(保存在类的__dicd__中)
实例化:a = MyClass(),生成了一个类的对象a
实例的初始化 __init__(其内的参数为实例的变量)
实例的变量是每个实例自己的变量,是自己独有的,类的变量是类的实例共享的属性和方法。都保存在各自的__dict__中。

封装:
类方法:
在类定义中,使用@classmethod装饰器修饰,必须至少有一个参数,第一个参数给了cls,cls指代类对象自身
静态方法:
在类定义中,使用@staticmethod装饰器修饰,调用时,不会隐式的传入参数

保护变量:在变量前加_,(开发者之间的约定,解释器没做任何改变)
私有变量:在变量前加__,(解释器将变量名字改了,变成 _类名__变量名)

属性装饰器:
使用@property装饰,后面跟的函数名就是以后的属性名,也是getter。
@property
def age(self):
return self.__age
setter装饰器,可以改属性
@age.setter
def age(self,vaule)
self.__age = vaule
deleter装饰器,可以删除属性,很少用
property必须在前,setter在后

继承:
class Cat(Animal),Cat继承了Animal的属性和方法
继承时,公有的,子类和实例都可以随意访问,私有成员被隐藏,子类和实例不可直接访问,私有变量所在的类内的方法可以访问这个私有变量

如果在子类中写相同的属性或方法,会覆盖父类的方法。
继承中的初始化:
如果父类中定义了__init__方法,应该在子类中调用它(使用 super().__init__(age) 方法)

多继承:
一个类继承了多个类,也就是有多个父类,轻易不要用

Mixin:
一个复杂的类往往需要许多功能,这些功能可能来自不同的类,这就需要有很多的类组合在一起,由Mixin实现
Mixin本质上是多继承实现的,体现的是一种组合的设计模式

 

 

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

赞 (0)
10590628461059062846
上一篇 2017-11-12 20:28
下一篇 2017-11-13 09:33

相关推荐

  • shell脚本编程和文件查找及压缩

    shell脚本编程 read:使用read来把输入值分配一个或多个shell变量     -p 指定要显示的提示     -t TIMEOUT     read 从标准输入中读取值,给每个单词分配一个变量   &nbsp…

    Linux干货 2016-08-18
  • 强大的文本处理工具:vim编辑器

    一:引言 系统管理员的重要工作就是修改与设置某些软件的重要配置文件,而vim作为vi编辑器的升级版本,不仅能够以不同颜色来显示文字内容,还能够进行诸如shell脚本、C等程序的编写,所以,它还是一个程序编辑器,接下来,就让我们一起来看看vim的有哪些好玩的用法和特征。 二:vim三种模式及其常见用法 虽然vim有非常庞大甚至说它复杂也不为过的功能体系,但用结…

    2017-08-05
  • Linux中的man命令使用方法

      Linux中的man命令就是manual的缩写,此命令是用来查看系统中自带的各种参考手册,帮助用户更好的了解并使用命令。   man命令的使用格式为: man COMMAND,即man后面跟上需要查询的命令,进到手册后有如下快捷按钮帮助用户更好的操作手册。     1.按键-j &nb…

    Linux干货 2016-10-20
  • LVS类型及工作原理

    lvs工作原理 lvs(Linux Virtual Server),工作于layer4,其原理是根据请求报文的目标IP和PORT将其转发至后端主机集群中的某一提供服务的主机,具体转发到哪一台后端主机需要由挑选算法来决定。通俗来说,lvs的功能是通过在内核空间的netfilter上的INPUT链上的ipvs实现的,当报文由物理网络接口进入主机后,ipvs将流经…

    Linux干货 2016-12-05
  • Linux文件的权限与解析

    一,文件的基本权限: 通常,你使用ls -l 命令,就会看到这样的行:   让我们解析一下这些字段代表的意思: -rw-r–r–. 1 root root 1018 Nov 6 2016 usb_modeswitch.conf 文件类型权限  硬链接数 文件所有者 文件所属组 文件容量  文件最后被修改时…

    2017-07-30
  • CentOS6 ELK实现

    1 简介 我们来介绍Centos6.5基于SSL密码认证部署ELK(Elasticsearch 1.4.4+Logstash 1.4.2+kibana3),同时为大家介绍如何集合如上组件来收集日志,本章的日志收集主要为大家介绍SYSTEM日志收集. 集中化日志收集主要应用场景是在同一个窗口临时性或永久性鉴定分析系统,应用等各类日志,对用户提供极大便利,同时也…

    2015-02-15