一、面向过程、面向对象对比
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. BundleConfig的作用

    在ASP.NET MVC4中(在WebForm中应该也有),有一个叫做Bundle的东西,它用来将js和css进行压缩(多个文件可以打包成一个文件),并且可以区分调试和非调试,在调试时不进行压缩,以原 ...

  2. C#关系运算符

    一.C#关系运算符 C#语言的关系运算符是对操作数的比较运算. 二.示例 using System;using System.Collections.Generic;using System.Linq ...

  3. C# checked运算符

    一.C# checked运算符 checked运算符用于对整型算术运算和显式转换启用溢出检查. 默认情况下,表达式产生的值如果超出了目标类型的范围,将会产生两种情况: ?常数表达式将导致编译时错误. ...

  4. Windows 下编辑 hosts 文件

    hosts 文件目录: C:\WINDOWS\system32\drivers\etc\hosts hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应 ...

  5. django+xadmin在线教育平台(六)

    4-1 使用py3.6和django1.11开发系统前注意事项 直接通过Python3.6和django最新版本来开发我们的系统的一些注意事项. 原版本: Python 2.7 & djang ...

  6. 【CSS】CSS 的优先级总结

    样式的优先级 多重样式(Multiple Styles):如果外部样式.内部样式和内联样式同时应用于同一个元素,就是使多重样式的情况. 一般情况下,优先级如下: (外部样式)External styl ...

  7. GBK UTF8 GB2132

    GBK就是在保存你的帖子的时候,一个汉字占用两个字节,外国人看会出现乱码,为此我中华为自己汉字编码而形成之解决方案. UTF8就是在保存你的帖子的时候,一个汉字占用3个字节.但是外国人看的话不会乱码. ...

  8. C语言实现判断分数等级

    从屏幕上输入一个学生的成绩(0-100),对学生成绩进行评定: <=60为"E" 60~69为"D" 70~79为"C" 80~89为 ...

  9. django之模型层

    1. ORM MVC或者MTV框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员 ...

  10. 动态规划:HDU1224-Free DIY Tour

       Free DIY Tour Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...