一、面向过程、面向对象对比
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. java设计模式——抽象工程模式

    一. 定义与类型 定义:抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,无须指定他们具体的类 类型:创建型 二. 适用场景 客户端不依赖于产品类实例如何备创建,实现等细节 创建一系列相关的产品 ...

  2. arcgis engine计算点到线的最短距离

    IProximityOperator接口用于获取两个几何图形的距离,以及给定一个Point,求另一个几何图形上离离给定点最近的点.IProximityOperator接口的主要方法有:QueryNea ...

  3. 《javascript 学习笔记》

    注释 1. // This is an in-line comment. 2. /* This is a  multi-line comment */ 七种data types(数据类型) undef ...

  4. jsp引用servlet生成的验证码代码演示

    此演示代码主要包括以下三部分:1.checkCode.java:用于生成验证码2.checkCodeServler3.check.jsp 验证 下面是checkCode.java的内容: 复制代码代码 ...

  5. form中 单选框 input[type="radio"] 分组

    在form中有时候需要给单选框分组,这种情况下 可以通过给单选框设置相同的name来进行分组: <html> <head> <title> </title&g ...

  6. Linux usb gadget框架概述

    很幸运,在公司开发了gadget相关驱动,总结下来,大大小小开发了四个与gadget相关的驱动,字符驱动.g_multi.g_ether.g_zero,在这里把自己对gadget的开发中自己的感悟记录 ...

  7. 南阳 ACM16 矩形嵌套 动态规划

    矩形嵌套 时间限制:3000 ms  |           内存限制:65535 KB 难度:4   描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形Y(c, ...

  8. Gym - 101908G Gasoline 二分+最大流

    G - Gasoline Gym - 101908G 题意:给出R个提供点,P个接收点,每个接收点都要接收满,还有一个运输的时间,问最小时间能够完成所有的运输 题解:首先每次都必须要满流,所以我们只要 ...

  9. 1、python的基础

    一.python组成 python程序的内容主要由变量.数据.关键字.操作符组成. 二.变量 在python中,变量指的是其指向的数据是可变的. 首先我们要了解一下python的内存管理.数据创建后就 ...

  10. TCP/IP网络编程之基于TCP的服务端/客户端(一)

    理解TCP和UDP 根据数据传输方式的不同,基于网络协议的套接字一般分为TCP套接字和UDP套接字.因为TCP套接字是面向连接的,因此又称为基于流(stream)的套接字.TCP是Transmissi ...