说在前面: 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

最新文章

  1. LINQ to SQL语句(20)之存储过程
  2. wpf,能够复制文字 及自动识别URL超链接的TextBlock
  3. ubuntu ping响应慢的解决方法
  4. HDU 4946 Area of Mushroom (几何凸包)
  5. eclipse 3.7 配置svn
  6. [leetcode]Rotate Array
  7. HDOJ 1226 超级密码
  8. MyBatis学习总结_16_Mybatis使用的几个建议
  9. ASP.NET MVC应用程序使用异步及存储过程
  10. JAVA线程间的状态转换
  11. 认证模式之Spnego模式
  12. Winform 加载datagridview
  13. HTML元素类别及转换
  14. diff补丁格式
  15. ArcGIS栅格影像怎么从WGS84地理坐标转成Xian80投影坐标
  16. [USACO]地震 (二分答案+最优比率生成树详解)
  17. max 基础知识
  18. python第四课——运算符
  19. swift--使用 is 和 as 操作符来实现类型检查和转换 / AnyObject与Any的区别
  20. 报错提示:mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in..的处理方式

热门文章

  1. linux负载均衡与性能监控
  2. 分布式中为什么要加入redis缓存的理解
  3. STM32F0 中 ADC 多通道转换结果相同的问题
  4. let 和 var 的区别笔记
  5. LeetCode934.shortest bridge【dfs+bfs】
  6. ECharts 雷达图怎么在类目值下面显示数值
  7. $_SERVER['SCRIPT_NAME']、$_SERVER['SCRIPT_FILENAME']及__FILE__不同
  8. maven tomcat eclipse 配置 debug
  9. 【网络】访问控制列表(ACL)
  10. 常用维护SQL-数据清理