python面向对象编程

  • 基本概念理解
  1. 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。
  2. 面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度。
  3. 而面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递。
  4. 面向对象的设计思想是抽象出Class,根据Class创建Instance
  • 类与实例

    1. #对象
    2. class Student(object):
    3. def __init__(self, name, score):
    4. self.name = name;
    5. self.score = score;
    6. def print_score(self):
    7. print('%s: %s' % (self.name, self.score));
    8. def get_grade(self):
    9. if self.score >= 90:
    10. return 'A';
    11. elif self.score >= 60:
    12. return 'B';
    13. else:
    14. return 'C';
    15. bart = Student("yehui", 99);
    16. lisa = Student("yehui01", 55);
    17. bart.print_score();
    18. lisa.print_score();
    19. print(lisa.get_grade());
    20. # 注意到__init__方法的第一个参数永远是self,
    21. # 表示创建的实例本身,因此,在__init__方法内部,
    22. # 就可以把各种属性绑定到self,因为self就指向创建的实例本身。
  • 访问限制

    如果我们不想让对象的实例的属性值被外部代码修改的话,我们就可以把属性的名称前面加上两个下划线__,实例的变量名如果以下划线 开头,那么他就是一个私有变量

  • 继承与多态

    在面向对象编程的语言中,继承是其主要的特性之一(封装、多态、继承),在python中,他的面向对象编程的继承和c++等面向对象语言相类似,就是子类可以继父类的属性和方法,通过继承,子类获得了父类的全部功能。我就不总结了,下面是他的继承方式及格式:

    1. #继承
    2. class Animal(object):
    3. def run(self):
    4. print("Animal is running...");
    5. class Dog(Animal):
    6. def run(self):
    7. print("Dog is running...");
    8. class Cat(Animal):
    9. def eat(self):
    10. print("Cat is meating...");
    11. class Pig(Animal):
    12. pass;
    13. dog = Dog();
    14. dog.run();
    15. cat = Cat();
    16. cat.run();
    17. cat.eat();
    18. pig = Pig();
    19. pig.run();
    20. # Dog is running...
    21. # Animal is running...
    22. # Cat is meating...
    23. # Animal is running...
    24. 你可以自己在给继承父类的子类添加方法和属性,也可也不添加。也可以重写父类的方法,这样子类的方法将会覆盖掉父类的方法。这就是继承的一个好处:**多态**。
    25. #多态
    26. def run_twice(animal):
    27. animal.run();
    28. animal.run();
    29. run_twice(Animal());
    30. run_twice(Dog());
    31. # Animal is running...
    32. # Animal is running...
    33. # Dog is running...
    34. # Dog is running...

    python多态允许我们新增父类的子类。对修改封闭:不需要修改依赖Animal类型的run_twice()等函数。

    Python是动态语言来说,则不一定需要传入Animal类型。我们只需要保证传入的对象有一个run()方法就可以了

  • 获取对象信息

    通过python内置的一系列函数,我们可以对任意一个对象进行剖析

  1. 使用 type()函数判断对象的类型;
  2. 使用isinstance()来判断类class的继承类型;
  3. 使用dir()函数获取一个对象的所以属性和方法。

总结

python的面向对象编程的思想和其他的面向对象程序语言大同小异,只不过是写法和用法的有差异而已,我因为之前有学过c++,所以在这部分的学习比较粗略。

python面向对象编程学习的更多相关文章

  1. python 面向对象编程学习

    1. 问题:将所有代码放入一个py文件:无法维护 方案:如果将代码才分放到多个py文件,好处: 1. 同一个名字的变量互相不影响 2.易于维护 3.引用模块: import module 2.包:解决 ...

  2. python 面向对象编程学习总结

    面向对象是个抽象的东西,概念比较多,下面会一一介绍. 一.类和实例 类(Class)和实例(Instance)是面向对象最重要的概念. 类是指抽象出的模板.实例则是根据类创建出来的具体的“对象”,每个 ...

  3. Python面向对象编程指南

    Python面向对象编程指南(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1SbD4gum4yGcUruH9icTPCQ 提取码:fzk5 复制这段内容后打开百度网 ...

  4. Python 面向对象编程 继承 和多态

    Python 面向对象编程 继承 和多态 一:多继承性 对于java我们熟悉的是一个类只能继承一个父类:但是对于C++ 一个子类可以有多个父亲,同样对于 Python一个类也可以有多个父亲 格式: c ...

  5. 图解python | 面向对象编程

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/56 本文地址:http://www.showmeai.tech/article-det ...

  6. python 面向对象编程(一)

    一.如何定义一个类 在进行python面向对象编程之前,先来了解几个术语:类,类对象,实例对象,属性,函数和方法. 类是对现实世界中一些事物的封装,定义一个类可以采用下面的方式来定义: class c ...

  7. python面向对象编程进阶

    python面向对象编程进阶 一.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 1 ...

  8. Python面向对象编程(下)

    本文主要通过几个实例介绍Python面向对象编程中的封装.继承.多态三大特性. 封装性 我们还是继续来看下上文中的例子,使用Student类创建一个对象,并修改对象的属性.代码如下: #-*- cod ...

  9. Python 面向对象编程——访问限制

    <无访问限制的对象> 在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑.但是,从前面Student类的定义来看(见:Py ...

随机推荐

  1. IDEA 录制宏+设置快捷键 实现写时编译

    参考: IDEA 录制宏+设置快捷键 实现写时编译:https://blog.csdn.net/wangjie919/article/details/79487981 IDEA 设置运行时不编译项目: ...

  2. redis 字符串和集合操作

    字符串 redis中的String在在内存中按照一个name对应一个value来存储 set() #在Redis中设置值,默认不存在则创建,存在则修改 r.set('name', 'zhangsan' ...

  3. Windows下QT MySQL驱动编译

    在Windows环境中使用Qt进行关于MySQL数据库的操作时,会出现如下问题: QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: availa ...

  4. python数据类型及其操作

    一.数字 常用类型:int,float age = 10  # int型 salary = 3000.5  # float型 进制: 二进制: 11 = 1*21 + 1*20 = 3 八进制: 11 ...

  5. 第七课 GDB调试 (下)

    1序言: 通过前面一节第六课 GDB调试 (下)文章,可以掌握理解了gdb调试:怎么启动.运行,打断点.查看变量.甚至改变变量等的知识,今天来大概讲解下调试bug的类型. 2知识点: 2.1 就像之前 ...

  6. Educational Codeforces Round 11B. Seating On Bus 模拟

    地址:http://codeforces.com/contest/660/problem/B 题目: B. Seating On Bus time limit per test 1 second me ...

  7. iOS 手机截屏

    百度地图自带截图功能,可以截取路线列表,保存到本地.可是对比发现截下来的图片并不是app中看到的那样,截图中头部加入了搜索的起点和终点,每段路程的详细站点都已展开,而且图片会根据路线的长短自动判断图片 ...

  8. 针对Oracle表 列字段的增加、删除、修改以及重命名操作sql

    增加字段语法:alter table tablename add (column datatype [default value][null/not null],….); 说明:alter table ...

  9. C#中ReferenceEquals和Equals的区别

    ReferenceEquals()判断两个字符串是否指向相同的内存地址:(判断引用) Equals,先判断两个字符串有相同的内存位置,是则两个字符串相等:否则逐字符比较两个字符串,判断是否相等(先判断 ...

  10. poj2533

    /*解题思路请看给分类的最长递增子序列算法解析那篇文章*/ #include<stdio.h> #include<string.h> int find(int *c,int l ...