一、面向过程、面向对象对比
1、面向过程
根据业务逻辑从上到下写垒代码
2、函数式思想
将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
3、面向对象
对函数进行分类和封装
1、2、3一步一步抽象,函数式是走向面向对象的中间步骤
函数式的应用场景 --> 各个函数之间是独立且无共用的数据
面向对象编程的应用场景:各个函数公用一组数据
4、基于并发的编程
Erlang语言提出的并发,
单进程、单线程
多进程、多线程的编程方式
5、一般在Python开发中,全部使用面向对象 或 面向对象和函数式混合使用
 
二、面向对象
面向对象编程是一种编程方式,此编程方式的落地需要使用 “类” 和 “对象”来实现,所以,面向对象编程其实就是对 “类” 和 “对象” 的使用。
1、类:由属性和方法组成
2、属性
3、方法
4、实例化:创建一个类的实例,类的具体对象。
5、对象:根据模板创建的实例,通过实例对象可以执行类中的属性和方法
6、继承:即一个派生类(derived class)继承基类(base class)的字段和方法
7、方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方
法的覆盖(override),也称为方法的重写。
 
三、对象
对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。
1、程序中所有东西都是对象;
2、对象具有状态和行为:其中状态保存在一组变量中,行为则通过方法实现。
3、对象的方法一方面把对象的内部变量包裹、保护起来,使得只有对象自己的方法才能操作这些内部变量;另一方面,对象的方法还是对象与外部环境和其他对象交互、通信的接口,外界对象通过这些接口驱动对象执行指定的行为,提供相应的服务。
 
四、类
类描述了同一类对象都具有的数据和行为。
(1)类就是一个模板,模板里可以包含多个函数,函数里实现一些功能
(2)对象则是根据模板创建的实例,通过实例对象可以执行类中的函数
 
1、创建类
(1)
class Foo(object):类名首字母要大写,继承object类
empCount = 0
empCount是一个类属性(也叫静态属性),它的值将在这个类的所有实例之间共享。你可以在内部类或外部类使用Employee.empCount访问
def __init__(self,name,age): 构造函数
self.name=name
self.age=age
类的构造方法或初始化方法,只要创建类的实例,就会调用这个方法。如果没显示定义这个方法,默认会给一个空的构造方法。
def bar(self):
self:代表实例本身并且类中所有的方法中都必须有self,并且写在第一个参数位置
obj=Foo() 实例化,函数中的self会自动把实例赋值给self,不需要手动赋值
创建对象,类名称后加括号即可
obj.bar() 执行bar方法
(2)def __inti__(self,*args): 使用了元祖参数,对于变量不确定的情况
if len(args)==2:
self.name=name
self.age=age
else:
print 'no salary'
 
2、创建实例对象
要创建一个类的实例,可以使用类的名称,并通过__init__()方法来接受参数
创建一个类的具体对象。每次从类产生实例时,Python都会自动调用名为__init__的方法,也就是类的构造方法,进行数据初始化。新实例会如往常那样传入__init__的self参数。该方法也会在类中被继承。
 
五、类与对象在内存中的调用关系
1、类与对象在内存中的存储情况
类以及类中的方法在内存中只有一份,而根据类创建的每一个对象都在内存中需要存一份
类:存储属性和方法
对象:存储自己的属性和类对象指针(使用对象中的方法时,去类的内存中找具体的方法)
根据类创建对象时,对象中除了封装 name 和 age 的值之外,还会保存一个类对象指针,该值指向当前对象的类。
当通过 obj1 (实例)执行类中的方法时,过程如下:
根据当前对象中的 类对象指针 找到类中的方法将对象 obj1 当作参数传给 方法的第一个参数 self(实例方法加self的真正目的)
 

Python之面向对象:面向对象基础的更多相关文章

  1. 8.python笔记之面向对象基础

    title: 8.Python笔记之面向对象基础 date: 2016-02-21 15:10:35 tags: Python categories: Python --- 面向对象思维导图 (来自1 ...

  2. python学习第十四天 -面向对象编程基础

    python也是支持面向对象编程的.这一章节主要讲一些python面向对象编程的一些基础. 什么是面向对象的编程? 1.面向对象编程是一种程序设计范式 2.把程序看做不同对象的相互调用 3.对现实世界 ...

  3. 二十. Python基础(20)--面向对象的基础

    二十. Python基础(20)--面向对象的基础 1 ● 类/对象/实例化 类:具有相同属性.和方法的一类人/事/物 对象(实例): 具体的某一个人/事/物 实例化: 用类创建对象的过程→类名(参数 ...

  4. Python 面向对象编程基础

    Python 面向对象编程基础 虽然Pthon是解释性语言,但是Pthon可以进行面向对象开发,小到 脚本程序,大到3D游戏,Python都可以做到. 一类: 语法: class 类名: 类属性,方法 ...

  5. Python 面向对象之五 基础拾遗

    Python 面向对象之五 基础拾遗 今天呢,就剩下的面向对象的相关知识进行学习,主要会学习以下几个方面的知识:1.上下文管理协议,2.为类加装饰器 3.元类 一.上下文管理协议 在学习文件操作的时候 ...

  6. Python基础 — 面向对象编程基础

    目录 1. 面向对象编程基础 2. 定义类和创建对象 3. init() 方法 4. 魔法方法 5. 访问可见性问题 5. 练习 1. 面向对象编程基础 把一组数据结构和处理它们的方法组成对象(obj ...

  7. Python学习-第三天-面向对象编程基础

    Python学习-第三天-面向对象编程基础 类和对象 简单的说,类是对象的蓝图和模板,而对象是类的实例.这个解释虽然有点像用概念在解释概念,但是从这句话我们至少可以看出,类是抽象的概念,而对象是具体的 ...

  8. Python(三)基础篇之「模块&面向对象编程」

    [笔记]Python(三)基础篇之「模块&面向对象编程」 2016-12-07 ZOE    编程之魅  Python Notes: ★ 如果你是第一次阅读,推荐先浏览:[重要公告]文章更新. ...

  9. 【循序渐进学Python】7.面向对象的核心——类型(上)

    我们知道Python是一门面向对象的脚本语言.从C#的角度来看:首先Python支持多继承.Python 类型成员通常都是public的,并且所有成员函数都是virtual的(可以直接重写). 1. ...

  10. day23面向对象编程基础

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

随机推荐

  1. vmware:使用.zip文件在vmware中安装操作系统

    问题描述: 之前在vmware中安装系统时,全部都是加载的.iso文件来实现.后面同事给了一个zip包,解压后是".vmdk"等一系列具体的文件.一时间不知道怎么安装系统了,搜网页 ...

  2. SQL数据库查询出一张表中重复的数据,按某个字段来查找。

    例如表名为Course 需要查询出name重复的有那些??? 解答如下: 补充: 如:查询每个姓名出现大于2次,SQL如下 SELECT COUNT(NAME) as '出现次数',  NAME FR ...

  3. Finders Keepers-freecodecamp算法题目

    Finders Keepers 1.要求 写一个 function,它遍历数组 arr,并返回数组中第一个满足 func 返回值的元素. 举个例子,如果 arr 为 [1, 2, 3],func 为 ...

  4. ceph 性能

    mysql在以下设备备份耗时,供大家参考: 备份文件大小 sata用时 ceph用时 nas挂载sata盘用时 7G   1分钟   15G   2分钟 21分钟 47G   8分钟 82分钟 274 ...

  5. python 实现简单语音聊天机器人

    '''思路:使用百度的文本转音频API,将结果保存成mp3格式,并用mp3play库播放该文件.''' 1 # -*- coding:utf-8 -*- import sys import reque ...

  6. python从入门到精通之30天快速学python视频教程

    点击了解更多Python课程>>> python从入门到精通之30天快速学python视频教程 课程目录: python入门教程-1-Python编程语言历史及特性.mkv pyth ...

  7. c#用object将datatable快速填充excel后下载表格后打不开的问题

    最近在用c#的asp.net,需要批量导出数据.原本用的是stringbuilder逐个填充,但是只能做到html强制格式转换为xls,这不是真正的excel表格,所以在网上找了datatable快速 ...

  8. bootmem_free_node

    该函数设置: 1.pgdata节点的成员 2.pgdata->zone的成员 3.初始化zone->free_area 4.初始化zone所包含的所有页对应的页框描述符page结构体 /* ...

  9. windows7下将Cygwin加入右键菜单,并从当前目录打开

    第一步:修改windows注册表 1·开始->运行(或者win键+R),输入REGEDIT,回车,打开注册表编辑器: 2·找到HKEY_CLASSES_ROOT\Directory\Backgr ...

  10. Find a path HDU - 5492 (dp)

    Find a path Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...