一.编程范式

1.面向过程编程

面向过程把函数继续切分为子函数,来降低系统的复杂度。初学者容易接受,从上往下依次执行。

2.面向对象编程(OOP) Object Oriented Programming  对函数进行分类和封装....

面向对象编程——Object Oriented Programming,简称 OOP,把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。

3.面向函数编程(lisp)

将某功能的代码封装为一个函数,使用时仅调用函数。

(2+3)*2-1   jian(multi(add(2,3),2),1)

二.基础概念

1.类:在 Python 中,所有数据类型都可以视为对象,当然也可以自定义对象。自定义的对象数据类型就是面向对象中的类(Class)。

OOP首选思考的不是程序的执行流程,而是某个数据类型应该被视为一个对象,这个对象拥有的属性(Property)。

2.object表示该类是从哪个类继承下来的。通常,如果没有合适的继承类,就使用 object 类,这是所有类最终都会继承的类。

class people:                         经典类

class People(object):            新式类,object类是所有类的基类/父类

3.实例(Instance)则是一个个具体的 Student;

面向对象的抽象程度又比函数要高,因为一个 Class 既包含数据,又包含操作数据的方法。

- 创建实例的方式:student1 = Student()

- 可以自由地给实例变量绑定属性,student1.name,student1.score;

4.构造函数

def __init__(self,name,age):     构造函数,当实例化对象时自动调用

5.属性 self.name = name

6.方法: 给对象发消息实际上就是调用对象对应的关联函数,我们称之为对象的方法(Method)。

Class 是一种抽象概念,比如我们定义的 Class——Student,是指学生这个概念;

__init__ 方法的第一个参数永远是 self ,表示创建的实例本身;

- 在类中定义的函数只有一点不同,就是第一个参数永远是实例变量self ,并且调用时,不用传递该参数。

- 可定义一个特殊的 __init__ 方法,在创建实例的时候,就把name , score等属性绑上去。

7.析构函数

删除实例化对象时自动调用;

def __del__(self):

print "deleteing......"

8.子类

class Student(People):                 Student是子类,继承People这个父类;

注:以上例子见下面数据封装的图示

三.面向对象的三个特性

1.数据封装

封装:把内容统一放在一个地方,看成一个整体,(实例化对象self和类的属性绑定在一起);

- 访问封装内容的两种方式:

通过self去访问封装的内容;(self.name)

通过实例化的对象名去访问封装的内容;

练习:

练习1:

创建一个类People,拥有的方法为砍柴,娶媳妇,回家;

实例化对象,执行相应的方法

显示如下:

老李,18岁,男,开车去娶媳妇

校思浩,22岁,男,上山去砍柴

唐浩,10岁,男,辍学回家

属性:name,age,gender

方法:goHome(), kanChai(),quXiFu()

2.继承

继承性:子承父业,继承遗产.对于面向对象的继承来讲,就是将多个类共有的方法提取到父类中去,而子类只需要继承

父类的方法,不需要一一实现每个方法;1.几个概念:子类(派生类)和父类(基类),经典类和新式类

class D(object):  新式类

class D:                   经典类

(1)继承属性的第一种方法,不推荐

如果父类名更改,此处也需要更改

(2)继承属性的第一种方法super,推荐

2.多继承

- python的类可以继承多个,Java和C#只能单继承;

- 继承多个类,有两种算法:深度优先算法和广度优先算法;

- 类为经典类(class C:)时,多继承时使用深度优先算法;

- 类为新式类(class C(C1,C2))时,多继承时使用广度优先算法;

eg: D, C(D), B(D), A(B,C)

深度优先:A->B->D->C

广度优先: A->B->C->D

3. 注意:类的方法中可以传递一个对象

(1)新式类(优先同级) 优先在C类中找

(2)新式类(优先同级) 优先在C类中找,C中没有再去D类中找

(3)经典类(优先上级) 优先在B类中找,B中没有再去B类的上级D类中找

(4)经典类(优先上级) 优先在B类中找,B中没有再去B类的上级D类中找,D类没有最后在到同级的C类中找

3.多态

就是多种表现形态的意思。它是一种机制、一种能力,而非某个关键字。它在类的继承中得以实现,在类的方法调用中得以体现。多态意味着变量并不知道引用的对象是什么,根据引用对象的不同表现不同的行为方式。

- 如果子类调用的方法,子类没有,父类有,运行父类;

- 如果子类调用的方法,子类有,父类也有,只运行子类的;

四.将两个子类做关联

五.访问限制

在 Python 中,实例的变量名如果以 __ 开头,就变成了一个私有变量(private);

当self.__age变为私有变量,等于_People__age    _People__age = self.__age

本文转自一百个小排 51CTO博客,原文链接:http://blog.51cto.com/anfishr/1962496,如需转载请自行联系原作者

python中面向对象编程简称为_Python-面向对象编程相关推荐

  1. python中的多态用法_Python面向对象之多态原理与用法案例分析

    本文实例讲述了Python面向对象之多态原理与用法.分享给大家供大家参考,具体如下: 目标 多态 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 定义类的准则 继承 ...

  2. Python中的匿名函数和函数式编程

    Python中的匿名函数和函数式编程 文章目录 Python中的匿名函数和函数式编程 一.匿名函数 匿名函数的格式: 二.函数式编程 map() filter() reduce() 区别 三.'三目运 ...

  3. python中面向对象编程简称为_Python基础-面向对象编程

    本文完全转载自廖雪峰大神的教程: 面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的 ...

  4. python面相对象编程指南_Python面向对象编程指南

    抽象是隐藏多余细节的艺术.在面向对象的概念中,抽象的直接表现形式通常为类.虽然Python是解释性语言,但是它是面向对象的,从设计之初就已经是一门面向对象的语言.Python基本上提供了面向对象编程语 ...

  5. python面向对象怎么解决_Python面向对象编程1

    前言 面相对象是Python的重要特性,继承了C++的类风格,在Python中的一切数据类型都是面向对象的.本章主要介绍Python的面向对象编程. 面向对象: 什么是OOP(面向对象),Object ...

  6. python中for循环流程图_Python编程中的for循环语句学习教程

    Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串. 语法: for循环的语法格式如下: for iterating_var in sequence: statements(s) ...

  7. python面向对象生动讲解_Python面向对象语法精讲

    本专题的内容结构: 第一部分主要是:面向对象基础 第二部分主要是:面向对象进阶 第一部分的结构: unit1:面向对象编程模式: (1),面向对象编程思想 (2),面向对象的三个特征 (3),Pyth ...

  8. python高级语法装饰器_Python高级编程——装饰器Decorator超详细讲解上

    Python高级编程--装饰器Decorator超详细讲解(上篇) 送你小心心记得关注我哦!! 进入正文 全文摘要 装饰器decorator,是python语言的重要特性,我们平时都会遇到,无论是面向 ...

  9. python面向对象的概念_Python面向对象概念和三要素

    语言分类 1.面向机器 抽象成机器指令,机器容易理解 代表:汇编语言 2.面向过程 做一个事情,排出步骤,第一步干什么,第二步干什么,如果出现情况A怎么处理,如果出现情况B做什么处理. 问题规模小,可 ...

  10. python如何设计工具类_Python面向对象 --- 类的设计和常见的内置方法

    面向对象:一种基于面向过程的新的编程思想.也就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节:这种思想是将数据作为第一位,而方法或者说是算法作为其次,这是对数据一种 ...

最新文章

  1. Melkman's Algorithm
  2. 超好用的移动端布局自适应大小rem判断js文件及超过一定高度回到顶部按钮代码...
  3. 00075_BigInteger
  4. 什么是死锁,产生的原因,防止死锁的办法
  5. 程序员数学基础【四、取模应用-判断奇偶数、判断素数、求两个数的最大公约数、水仙花数】(Python版本)
  6. ML in Action 决策树
  7. 获取数据 - 下载附件解压附件 - Python代码
  8. 基于Java SSM springboot+VUE+redis实现的前后端分类版网上商城项目
  9. libsvm java 实例_LibSVM Java API调用示例程序
  10. 文件创建时间、访问时间、修改时间
  11. 前端工具 git笔记
  12. ROS main函数中订阅器的编写
  13. 苹果cms新手快速入门常见问题汇总及解决教程
  14. PMP工作绩效数据、信息和报告三者的区别
  15. [源码和文档分享]基于C语言实现的汽车牌照的快速查询
  16. 离线编译安装lrzsz
  17. CVPR 2022 Oral | MLP进军底层视觉!谷歌提出MAXIM:刷榜多个图像处理任务,代码已开源!...
  18. java html5 cms,企业内部cms业务管理系统html5简洁的模板
  19. 绿芯GreenChip电容式触控触摸IC型号性能介绍
  20. 三星i908、iPhone3G对比评测

热门文章

  1. Unity 场景光照出现问题
  2. 机器学习_经典模型_逻辑回归(logistic regression)
  3. Liunx 安装redis
  4. 物理-反重力系统:反重力系统
  5. 【saltstack】认证失败,无法生成minion_master.pub问题处理总结
  6. openerp mysql_openerp 经典收藏 Openerp开发进销存系统完毕总结(转载)
  7. AI上推荐 之 FiBiNET模型(特征重要性选择与双线性特征交叉)
  8. 北方工业大学计算机复试分数线,北方工业大学2017年复试分数线
  9. 重庆理工大学计算机考研分数,重庆理工大学历年考研分数线汇总[2012-2021]
  10. git 出现错误fatal: Unable to create ‘project_path/.git/index.lock‘: File exists.