python中面向对象编程简称为_Python-面向对象编程
一.编程范式
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-面向对象编程相关推荐
- python中的多态用法_Python面向对象之多态原理与用法案例分析
本文实例讲述了Python面向对象之多态原理与用法.分享给大家供大家参考,具体如下: 目标 多态 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 定义类的准则 继承 ...
- Python中的匿名函数和函数式编程
Python中的匿名函数和函数式编程 文章目录 Python中的匿名函数和函数式编程 一.匿名函数 匿名函数的格式: 二.函数式编程 map() filter() reduce() 区别 三.'三目运 ...
- python中面向对象编程简称为_Python基础-面向对象编程
本文完全转载自廖雪峰大神的教程: 面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的 ...
- python面相对象编程指南_Python面向对象编程指南
抽象是隐藏多余细节的艺术.在面向对象的概念中,抽象的直接表现形式通常为类.虽然Python是解释性语言,但是它是面向对象的,从设计之初就已经是一门面向对象的语言.Python基本上提供了面向对象编程语 ...
- python面向对象怎么解决_Python面向对象编程1
前言 面相对象是Python的重要特性,继承了C++的类风格,在Python中的一切数据类型都是面向对象的.本章主要介绍Python的面向对象编程. 面向对象: 什么是OOP(面向对象),Object ...
- python中for循环流程图_Python编程中的for循环语句学习教程
Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串. 语法: for循环的语法格式如下: for iterating_var in sequence: statements(s) ...
- python面向对象生动讲解_Python面向对象语法精讲
本专题的内容结构: 第一部分主要是:面向对象基础 第二部分主要是:面向对象进阶 第一部分的结构: unit1:面向对象编程模式: (1),面向对象编程思想 (2),面向对象的三个特征 (3),Pyth ...
- python高级语法装饰器_Python高级编程——装饰器Decorator超详细讲解上
Python高级编程--装饰器Decorator超详细讲解(上篇) 送你小心心记得关注我哦!! 进入正文 全文摘要 装饰器decorator,是python语言的重要特性,我们平时都会遇到,无论是面向 ...
- python面向对象的概念_Python面向对象概念和三要素
语言分类 1.面向机器 抽象成机器指令,机器容易理解 代表:汇编语言 2.面向过程 做一个事情,排出步骤,第一步干什么,第二步干什么,如果出现情况A怎么处理,如果出现情况B做什么处理. 问题规模小,可 ...
- python如何设计工具类_Python面向对象 --- 类的设计和常见的内置方法
面向对象:一种基于面向过程的新的编程思想.也就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节:这种思想是将数据作为第一位,而方法或者说是算法作为其次,这是对数据一种 ...
最新文章
- Melkman's Algorithm
- 超好用的移动端布局自适应大小rem判断js文件及超过一定高度回到顶部按钮代码...
- 00075_BigInteger
- 什么是死锁,产生的原因,防止死锁的办法
- 程序员数学基础【四、取模应用-判断奇偶数、判断素数、求两个数的最大公约数、水仙花数】(Python版本)
- ML in Action 决策树
- 获取数据 - 下载附件解压附件 - Python代码
- 基于Java SSM springboot+VUE+redis实现的前后端分类版网上商城项目
- libsvm java 实例_LibSVM Java API调用示例程序
- 文件创建时间、访问时间、修改时间
- 前端工具 git笔记
- ROS main函数中订阅器的编写
- 苹果cms新手快速入门常见问题汇总及解决教程
- PMP工作绩效数据、信息和报告三者的区别
- [源码和文档分享]基于C语言实现的汽车牌照的快速查询
- 离线编译安装lrzsz
- CVPR 2022 Oral | MLP进军底层视觉!谷歌提出MAXIM:刷榜多个图像处理任务,代码已开源!...
- java html5 cms,企业内部cms业务管理系统html5简洁的模板
- 绿芯GreenChip电容式触控触摸IC型号性能介绍
- 三星i908、iPhone3G对比评测
热门文章
- Unity 场景光照出现问题
- 机器学习_经典模型_逻辑回归(logistic regression)
- Liunx 安装redis
- 物理-反重力系统:反重力系统
- 【saltstack】认证失败,无法生成minion_master.pub问题处理总结
- openerp mysql_openerp 经典收藏 Openerp开发进销存系统完毕总结(转载)
- AI上推荐 之 FiBiNET模型(特征重要性选择与双线性特征交叉)
- 北方工业大学计算机复试分数线,北方工业大学2017年复试分数线
- 重庆理工大学计算机考研分数,重庆理工大学历年考研分数线汇总[2012-2021]
- git 出现错误fatal: Unable to create ‘project_path/.git/index.lock‘: File exists.