1面向对象编程

面向对象编程:

面向对象编程——Object OrientedProgramming

OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。

面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度。

面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递。

所有的数据类型可以视为对象,当然也可自定义对象,自定义的对象数据类型就是面向对象中的类(class)的概念。

涉及到类,自然想到实例,类是数据类型的抽象,而实例是类的具体(个人理解)。

>>> std1 = { 'name': 'Michael','score': 98 }

>>> std2 = { 'name': 'Bob','score': 81 }

>>>

>>> def print_score(std): --打印学生的姓名和成绩

... print('%s: %s' % (std['name'], std['score']))

...

>>> print_score(std1)

Michael: 98

>>> print_score(std2)

Bob: 81

根据面向对象的程序设计思想,这个student应该被视为对象,抽象成类;

>>> classStudent(object): --定义类

... def __init__(self, name, score):

... self.name = name

... self.score = score

... def print_score(self): --定义方法

... print('%s: %s' % (self.name, self.score))

...

>>> bart = Student('Bart Simpson',59)

>>> lisa = Student('Lisa Simpson',87)

>>> bart.print_score() --调用对象的方法,一个具体的对象——实例

Bart Simpson: 59

>>> lisa.print_score()

Lisa Simpson: 87

面向对象的设计思想是抽象出Class,根据Class创建Instance。

1.1类和实例

1.1.1类和实例

>>> class Student(object): --class定义类的关键字,Student类名(大写开头),(object)表示从哪个类继承下来的

... pass

...

>>> Student

>>> bart = Student() --根据类创建实例

>>> bart

<__main__.Student object at0x2b7d2fd759e8>

如果没有合适的继承类,就使用object类,这是所有类最终都会继承的类。

可以自由地给一个实例变量绑定属性,比如,给实例bart绑定一个name属性:

>>> bart.name = 'Bart Simpson'

>>> bart.name

'Bart Simpson'

由于类起到的是模板的作用,创建类时,可以把必须绑定的属性强制填写进去—通过init方法

>>> class Student(object):

... def __init__(self, name,score): --init方法,init的第一个参数永远是self

... self.name = name

... self.score = score

...

在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。

存在init方法,创建实例时,必须填入指定参数,但self不需要传入,Python自己填入。

>>> bart = Student('DAIDAI', 99) --必须填入指定参数,强制性

>>> bart.name --name,score成为对象的属性

'DAIDAI'

>>> bart.score

99

>>> bart.self --不能这么指定self

Traceback (most recent call last):

File "", line 1, in

AttributeError: 'Student' object has noattribute 'self'

>>> bart.grade = 'A' --新增属性grade

>>> bart.grade

'A'

类的方法和普通函数没有什么区别,所以,你仍然可以用默认参数、可变参数、关键字参数和命名关键字参数。

1.1.2数据封装

>>> class Student(object):

... def __init__(self, name, score):

... self.name = name

... self.score = score

... def print_score(self): -- print_score方法

... print('%s: %s' % (self.name, self.score))

... def get_grade(self): --get_grade 方法

... if self.score >= 90:

... print('A')

... elif self.score >= 70:

... print('B')

... else:

... print('C')

...

定义方法,第一个参数是self,其他和函数一致。

>>> daidai = Student('DAIDAI', 99)

>>> daidai.print_score() --实例变量上的调用

DAIDAI: 99

>>> daidai.get_grade()

A

以上便是实现类的定义和其方法的定义,实现了类的封装。

方法就是与实例绑定的函数,和普通函数不同,方法可以直接访问实例的数据。

Python允许对实例变量绑定任何数据,也就是说,对于两个实例变量,虽然它们都是同一个类的不同实例,但拥有的变量名称都可能不同。

>>> daidai.age = 8

>>> daidai.age

8

>>> xiongxiong.age --这个实例变量并未绑定

Traceback (most recent call last):

File "", line 1, in

AttributeError: 'Student' object has noattribute 'age'

python的类和实例_Python 面向对象编程——类和实例相关推荐

  1. php http面向对象编程实例,PHP面向对象编程——PHP对象引用实例代码

    /* ?* WEB开发笔记 www.chhua.com 每日练习 PHP面向对象编程--PHP对象引用实例代码 ?*/ /*代码演示 ?* */ class HelloWorld {//被引用对象 ? ...

  2. python类详解_python面向对象编程:python类和实例讲解

    东尧爱分享 这是东尧每天一篇文章的第51天 东尧写文章的目标:分享东尧的经验和思考,帮你获取物质和精神两方面幸福. 1 什么是对象 在python里面,一切皆为对象.也就是说python里的所有数据都 ...

  3. python的类和对象_Python面向对象之类和对象实例详解

    本文实例讲述了Python面向对象之类和对象.分享给大家供大家参考,具体如下: 类和对象(1) 对象是什么? 对象=属性(静态)+方法(动态): 属性一般是一个个变量:方法是一个个函数: #类的属性 ...

  4. python定义一个类和子类_Python面向对象class类属性及子类用法分析

    本文实例讲述了Python面向对象class类属性及子类用法.分享给大家供大家参考,具体如下: class类属性 class Foo(object): x=1.5 foo=Foo() print fo ...

  5. java类声明语句_Java面向对象编程-类的声明周期

    第十章 类的生命周期 10.1 Java虚拟机及程序的生命周期 当通过java命令运行一个Java程序时,就启动了一个Java虚拟机进程.Java虚拟机进程从启动到终止的过程,称为Java虚拟机的生命 ...

  6. python交互界面实例_Python面向对象编程扑克牌发牌程序,另含大量Python代码!

    1. 题目 编写程序, 4名牌手打牌,计算机随机将52张牌(不含大小鬼)发给4名牌手,在屏幕上显示每位牌手的牌. 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后, ...

  7. python多进程编程实例_Python多进程编程multiprocessing代码实例

    下面记录一下多进程编程的别一种方式,即使用multiprocessing编程 import multiprocessing import time def get_html(n): time.slee ...

  8. python完全支持面向对象编程_Python 面向对象编程概要

    面向对象三大特性 面向对象的三大特性是指:封装.继承和多态. 封装 封装,顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容. 所以,在使用面向对象的封装特性时,需要: 将内容封装到某处 ...

  9. python快速入门【五】---- 面向对象编程、python类

    python入门合集: python快速入门[一]-----基础语法 python快速入门[二]----常见的数据结构 python快速入门[三]-----For 循环.While 循环 python ...

最新文章

  1. solaris10修改IP
  2. .NET多线程编程入门
  3. Fusioncharts图表组件API参考方法(Functions)汇总篇(续)
  4. WINCE开发更安全可靠设备驱动的最佳实践
  5. Java中ArrayList最大容量为什么是Integer.MAX_VALUE-8?
  6. 摄像头poe供电原理_什么是POE供电,这种POE套装有什么优势呢?
  7. 【效率】推荐一款特别厉害的在线工具,程序员的百宝箱
  8. 微信小程序部分功能介绍和实现
  9. 配置mysql使其允许外部ip进行登录
  10. 传感器绕着世界坐标系旋转产生的疑惑
  11. 是谁成全了我们在吃鸡、狼人杀里的实时互动?
  12. CCF NOI1008 水仙花数
  13. 全面了解IDC数据中心
  14. 为什么计算机网络使用数字信号,计算机网络数字电子技术的作用
  15. 定积分的基本性质6 积分第一中值定理
  16. 计算机学院教师老带新总结,教师以老带新个人工作总结范文(精选3篇)
  17. 一个程序员的晋升之路
  18. 动态加载当前年份的前五年后十年
  19. 前端js经典面试题目
  20. word复制到另一个文档,endnotes出现乱码处理

热门文章

  1. html5-css的使用强制优先级
  2. 【独家】孙茂松:从机器翻译到古诗生成
  3. CSS3的边框(二)
  4. AC自动机 - 关于Fail指针
  5. 《设计模式系列》---克隆模式
  6. 基于CFS算法的schedule()源码分析
  7. 什么才算是“真正的”编程能力?不提升这些能力,你何时能拿高薪!
  8. 五分钟让你的数据动起来,动态数据可视化极简教程
  9. dazhilu网站代码【完整篇】
  10. 参与势力战是不可多得的zhajinhua2012