一、类

面向对象是对函数进行分类和封装,其主要目的是提高程序的重复实用性,让开发更方便快捷。

在我们的认知中,我们会根据属性相近的东西归为一类。例如:鱼类,鱼类的共同属性是呼吸,卵生。任何一个鱼都在此鱼类基础上创建的。

定义人鱼类fish:

class fish:

have_breath = True

reproduction = 'egg'

先定义一个类别class,就是鱼fish,在这里面定义了两个变量,一个是有呼吸have_breath,一个是升职方式reproduction,这两个就是鱼类的属性。

现在我养了一条金鱼,叫goldfish。它就是一个实际的对象,且属于鱼类,利用定义的fish类:

goldfish = fish()

print goldfish.reproduction

第一句为创建对象,说明goldfish是fish中的一个对象,goldfish就有了鱼类的属性,对属性的引用是通过,对象.属性的形式实现的。

二、方法

类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值。

例如:

#定义鱼类

class fish:

#变量

have_breath = True

reproduction = 'egg'

#新增方法,移动距离

def move(self, dx):

position = dx

return position

goldfish = fish()

print 'move:',goldfish.move(10)

重新定义了鱼类fish,新增一个方法属性move,方法的第一个参数self是必须要写的,不管用不用得到。

在调用move方法时,只传递dx参数即可。

三、面向对象的三大特性

继承、封装、多态

1、继承

可简单理解为子继承父的内容,下面再利用鱼类举例子。

鱼类分为,金鱼、鳄鱼等。

#金鱼类(gdfish):

class gdfish(fish):

eat_person = False

have_fin = True

#鳄鱼类(Crocilisk):

class Crocilisk(fish):

eat_person = True

have_fin = False

#定义金鱼对象,调用gdfish类

goldfish = gdfish()

#打印gdfish自身的属性

print goldfish.eat_person

#打印fish类父类的属性

print goldfish.have_breath

#调用fish类父类的方法

print 'move:',goldfish.move(10)

得到的:

True

False

move: 10

以上例子为新定义两个类,金鱼类gdfish和鳄鱼类Crocilisk,增加了两个属性,是否吃人eat_person,是否有鱼鳍have_fin 。括号内代表的是父类fish。即金鱼类gdfish和鳄鱼类Crocilisk是鱼类fish的子类,都继承了fish的属性与方法,可以直接调用和使用父类fish的方法和属性。上面的对象goldfish ,虽然只是针对金鱼类gdfish进行了实例化,但是因金鱼类gdfish自动继承了鱼类fish的属性和方法,所以,对象goldfish 就自动有了fish的属性和方法。

通过继承,可以减少程序中重复信息和重复语句。如果分别定义两个类别金鱼类和鳄鱼类,而不是通过继承,那么就需要把鱼类的属性和方法分别写到金鱼类和鳄鱼类的定义中,这样就显得代码臃肿繁琐,继承特性减少了此类问题的发生。

2、封装

封装,即为将内容封装到某处,然后再去调用北封装在某处的内容。

例如:

#定义鱼类

class fish:

def __init__(self,dx)

self.dx = dx

goldfish = fish(10)

当程序执行时,self是一个形式参数,goldfish = fish(10),self等于goldfish

所以,内容就被封装到goldfish 里面。goldfish 对象又有dx移动属于。下面就来显示调用其封装的内容。

(1)、通过对象直接调用

class fish:

def __init__(self,dx)

self.dx = dx

goldfish = fish(10)

#通过 goldfish 直接调用dx属性。

print goldfish.dx

返回:10

(2)、通过self间接调用

class fish:

def __init__(self,dx)

self.dx = dx

def move(self):

print self.dx

goldfish = fish(10)

#程序会将goldfish传递给self参数,通过调用fish类的方法,将封装的内容打印出来。

goldfish.move()

返回:10

3、多态

多态的含义,字面理解多种表现形式。它在类的继承中得以实现,在类的方法调用中得以体现。多态意味着变量并不知道引用的对象是什么,根据引用的对象的不通表现不通的行为方式。下面通过例子来说明多态的含义。

例如:

动物的叫声

猫叫声:喵喵。。。

够叫声:汪汪。。。

狼叫声:嗷嗷。。。

代码:

#定义动物类

class animal:

def __init__(self,name):

self.name = name

#定义cat类,继承animal的属性name

class cat(animal):

def shout(self):

return 'miaomiao'

#定义dog类,继承animal的属性name

class dog(animal):

def shout(self):

return 'wangwang'

#定义wolf类,继承animal的属性name

class wolf(animal):

def shout(self):

return 'wangwang'

#定义对象cat1,针对cat类实例化

cat1 = cat('zhenni')

#调用animal的类的属性name和cat1的自己的方法shout

print cat1.name + ':' + cat1.shout()

由上面的例子可以看出,针对动物的叫,猫、狗、狼的叫声都是不一样的,各有各的特点,但是对于父类animal,每个子类都继承了父类的属性名字,但各自又有自己不同的特点,由此可见子类显示了多态的特性。

python面向对象编程的优点-Python面向对象编程 一相关推荐

  1. python面向对象编程的优点-Python语言有哪些优点?

    2018年主流的十大编程语言中,Python排名第一,被广大使用者誉为"更美好"编程语言.Python语言自身的语言特点,使得他深受开发者的喜爱,那么Python语言到底有哪些优点 ...

  2. python的特点和优点-Python的优点和缺点有哪些?Python语言的特点

    任何一种编程语言,都有其优劣性,Python编程亦如此,以下是对Python优缺点的解析: 先看优点 Python的定位是"优雅"."明确"."简单& ...

  3. python面向对象编程的优点-Python 基础知识----面向对象编程

    一.面向对象编程介绍 面向过程编程: 核心是过程二字,过程指的是解决问题的步骤,即先做什么再干什么然后干什么. 基于该思想编写程序好比在设计一条流水线,是一种机械式的思维方式. 优点:复杂的问题流程化 ...

  4. python面向对象编程的优点-Python面向对象编程——总结面向对象的优点

    Python面向对象编程--总结面向对象的优点 一.从代码级别看面向对象 1.在没有学习类这个概念时,数据与功能是分离的 def exc1(host,port,db,charset): conn=co ...

  5. python面向对象编程的优点-Python入门之面向对象编程(一)面向对象概念及优点

    概念 谈到面向对象,很多程序员会抛出三个词:封装.继承和多态:或者说抽象.一切都是对象之类的话,然而这会让初学者更加疑惑.下面我想通过一个小例子来说明一下 面向对象一般是和面向过程做对比的,下面是一个 ...

  6. python面向对象编程的优点-Python面向对象编程

    面向过程编程,重点在于过程(可以理解成how),即以过程为核心,计算机/写代码的人会把精力聚焦在具体的实现过程上,这个过程第一步干什么,第二步干什么,直到最后完成了你的目标. 面向对象编程,重点在于对 ...

  7. python使用函数的优点-Python递归函数的优缺点

    对于求 n!,你可能会问,为何要用递归?有何优势?答案并不复杂,利用递归可以使算法的逻辑变得非常简单.因为递归过程的每一步用的都是同一个算法,计算机只需要自顶向下不断重复即可. 具体到阶乘的计算,无非 ...

  8. python使用函数的优点-Python用了这么多年,总结出超实用的功能和特点

    在使用Python这么久,时不时就会发现了一些过去不知道的功能和特性.一些可以说是非常有用,但却没有充分利用.本篇文章总结出你应该了解的Python功能特色,希望大家在学习过程中,少走弯路,善用技巧! ...

  9. python使用函数的优点-Python函数的特点

    函数对象 一.函数对象的四大工能 1.引用 def helllo(): x='helllo word' f=func print(f) 2.当作参数传给一个函数 def foo(m): m() foo ...

最新文章

  1. js怎样和硬件交互_Node.js与JavaScript
  2. memcache缓存服务器(nginx php memcache mysql)
  3. 用北斗和阿里云毫米级监控山体滑坡 他还只是铁路工人
  4. 别问我SolarWinds Orion API怎么用,自己进来看看,看完还不会来骂我
  5. 操作系统之内存管理:2、内存管理的功能(内存分配回收、扩充、地址转化、存储保护)
  6. OA办公系统需要专业的系统管理员
  7. matlab求取积分
  8. 2022-05-25 网络测试软件PingTools
  9. 税务会计实务【15】
  10. 自媒体多账号发布工具大全,快来看看
  11. Java项目:SSH房屋线下销售网站管理系统
  12. 纵观Android Adapter适配器。比较三种常用Adapter(SimpleAdapter,ArrayAdapter,BaseAdapter)。
  13. Turtlbot仿真之Stage
  14. Power PMAC运动控制器 —— 学习笔记1
  15. “我有技术到哪都是一样的”?年薪40W测试工程师被裁,回怼的这一番话,令人沉思
  16. 高位交叉和低位交叉_挑战408——组成原理(13)——并行存储器
  17. 信号系统中的特征函数和特征值
  18. pythonrequest爬取小说_python爬取斗破苍穹小说
  19. QQ.com速度优化解决方案介绍 1
  20. 函数式编程中的重要概念

热门文章

  1. 自己封装js组件 - 中级
  2. Tomcat学习过程
  3. 学会阅读Java字节码
  4. #ifdef 中的逻辑与或操作
  5. oracle 12C(12.2.0.1)安装-plm系统(一)
  6. python文件操作和集合(三)
  7. magic_quotes_gpc和magic_quotes_runtime的区别和用法详解
  8. VBA经典常用语句400句
  9. 多返回值函数的编写方法
  10. QQ、MSN、skype的网页临时会话代码