说在前面: Stage1—Stage4简单介绍一下Python语法,Stage5开始用python实现一些实际应用,语法的东西到处可以查看到,学习一门程序语言的最终目的是应用,而不是学习语法,语法本事其实很简单,本系列希望通过一个个的实例来了解和学习Python。


理解面向对象编程

万事万物皆对象

我们从窗户向外望去:

每棵树:每一课树都可以看成一个对象。

路上每个人:每一个人也可以看成一个对象。

每个人上班的事件: 可以看成一个对象。

类和对象

类则是从某一部分对象中抽象出来的一个群体,这些群体具有某些共同的特征,我们可以根据我们所需的某几个特征抽象出我们自己想要的类。

每个人都是对象,我们可以抽象出来人的共同特征,就像我们给自然界的物质分类一样(如何分类?根据特征分类)。

每个人上班的事件是对象,我们可以抽象出来上班,上班和上课就是两个类。

创建Python中的类和对象

创建类

class Person:

    #特殊方法,构造函数,创建这个类的时候会首先调用
def __init__(self, name, age):
self.name = name
self.age = age #定义一个方法,显示人的信息
def displyPersonInfor(self):
print("name:", self.name, ", age:", self.age)

创建对象(对象就是类的具体实例)

person = Person("xiaoming", 22)

访问属性及方法

person.displyPersonInfor()  #访问类的成员方法

print(person.name)          #访问类的属性
print(person.age)

python对象销毁(垃圾回收)

析构函数 deldel在对象销毁的时候被调用,当对象不再被使用时,del方法运行:

class Person:

    #特殊方法,构造函数,创建这个类的时候会首先调用
def __init__(self, name, age):
self.name = name
self.age = age #定义一个方法,显示人的信息
def displyPersonInfor(self):
print("name:", self.name, ", age:", self.age) #析构函数,对象销毁的时候调用
def __del__(self):
print(self.__class__.__name__ + "销毁") xiaoming = Person("xiaoming", 22)
xiaoming.displyPersonInfor() #访问类的成员方法 xiaoqiang = Person("xiaoqiang", 25)
xiaoqiang.displyPersonInfor() del xiaoming
del xiaoqiang

类的继承

面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制。继承完全可以理解成类之间的类型和子类型关系。

继承语法 class 派生类名(基类名)://… 基类名写作括号里,基本类是在类定义的时候,在元组之中指明的。

class Person:

    #特殊方法,构造函数,创建这个类的时候会首先调用
def __init__(self, name, age):
self.name = name
self.age = age #定义一个方法,显示人的信息
def displyPersonInfor(self):
print("name:", self.name, ", age:", self.age) #析构函数,对象销毁的时候调用
def __del__(self):
print(self.__class__.__name__ + "销毁") class Student: def __init__(self, name, age, grade):
Person.__init__(self, name, age)
self.grade = grade def displyPersonInfor(self):
print("i am a student, my name is " + self.name) def __del__(self):
print("student析构函数调用") xiaoming = Person("xiaoming", 22)
xiaoming.displyPersonInfor() #访问类的成员方法 xiaoqiang = Student("xiaoqiang", 25, 3)
xiaoqiang.displyPersonInfor() del xiaoming
del xiaoqiang

Stage4--Python面向对象的更多相关文章

  1. python 面向对象初级篇

    Python 面向对象(初级篇) 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发" ...

  2. Python 面向对象 基础

    编程范式概述:面向过程 和 面向对象 以及函数式编程 面向过程:(Procedure Oriented)是一种以事件为中心的编程思想. 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现 ...

  3. python面向对象进阶(八)

    上一篇<Python 面向对象初级(七)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...

  4. python 面向对象(进阶篇)

    上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...

  5. python 面向对象编程学习

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

  6. Python面向对象详解

    Python面向对象的"怜人之处" Python的待客之道--谁能进来 Python的封装--只给你想要的 Python的继承--到处认干爹 Python的多态--说是就是

  7. python 面向对象和类成员和异常处理

    python 面向对象 你把自己想象成一个上帝,你要创造一个星球,首先你要把它揉成一个个球,两个直径就能创造一个球 class star: '''名字(name),赤道直径(equatorial di ...

  8. python 面向对象学习

    ------Python面向对象初 下面写一个类的简单实用,以便方便理解类 #python 3.5环境,解释器在linux需要改变 #阅读手册查询readme文件 #作者:S12-陈金彭 class ...

  9. 初识python面向对象

    一.初识python面向对象: class Person: #使用class关键字定义一个类 age=0 #类变量(静态变量) def eat(self,food): #定义一个方法 self.age ...

  10. python 面向对象、特殊方法与多范式、对象的属性及与其他语言的差异

    1.python 面向对象 文章内容摘自:http://www.cnblogs.com/vamei/archive/2012/06/02/2532018.html   1.__init__() 创建对 ...

随机推荐

  1. POJ_2431 Expedition 【数据结构】

    一.题面 POJ2431 二.分析 主要说几个坑 1.给出的点需要根据下标排序. 2.根据不同的方式要把起始点或者终点加进去.我没有转换距离,而是直接从起始点到终点根据距离不断相减判断的,那么起点就是 ...

  2. 1136 A Delayed Palindrome (20 分)

    Consider a positive integer N written in standard notation with k+1 digits a​i​​ as a​k​​⋯a​1​​a​0​​ ...

  3. v-for遍历对象

    如果数据是这样的: userInformation:{ 'aa':{ user_name:'ddd123', icon:'', pic:'', addTime:'2018-3-21 11:21', c ...

  4. [转] Akka实战:构建REST风格的微服务

    [From] http://www.yangbajing.me/2015/11/27/akka%E5%AE%9E%E6%88%98%EF%BC%9A%E6%9E%84%E5%BB%BArest%E9% ...

  5. Oracle 11g 记录DML错误数据

    [From] https://oracle-base.com/articles/10g/dml-error-logging-10gr2 需要记录下大量DML操作中出错的具体record,看到有两种方案 ...

  6. Oracle笔记-Multitable INSERT 的用法

    [转自]  http://blog.chinaunix.net/uid-8504518-id-3310531.html 为避免日趋衰退的记忆力,参考官方E文文档<Introduction to ...

  7. python 可迭代对象,迭代器和生成器,lambda表达式

    分页查找 #5.随意写一个20行以上的文件(divmod) # 运行程序,先将内容读到内存中,用列表存储. # l = [] # 提示:一共有多少页 # 接收用户输入页码,每页5条,仅输出当页的内容 ...

  8. javascript格式化时间(几秒钟前,几分钟前,几小时前,几天前...)

    beautify_time: function(timestamp) { var mistiming = Math.round(new Date() / 1000) - timestamp; var ...

  9. 2.4 GO Interface

    package itface type Sender interface { Send(url string) string } type Geter interface { Get(url stri ...

  10. postgresql数据库primary key约束/not null约束/unique约束及default值的添加与删除、列的新增/删除/重命名/数据类型的更改

    如果在建表时没有加primary key约束.not null约束.unique约束.default值,而是创建完表之后在某个字段添加的话 1.primary key约束的添加与删除 给red_pac ...