学习python的第四十六天-第八章 面向对象
2016-12-30 18:46
155 查看
第八章 面向对象
使用面向对象的程序设计,能够更好的设计软件架构,维护软件模块,并易于框架和组件的重用。python支持面向过程,面向对象,函数式编程等多种编程范式。
python不强制我们使用任何一种编程范式,我们可以使用过程式编程编写任何程序。对于中等和大型项目来说,面向对象将给我们带来很多优势。(看到写到这里我就开始犯嘀咕,当我写代码超过500行的时候是什么时候)
8.1 面向对象的概述
面向对象是一种描述业务问题,设计业务实体和实体之间关系的方法。面向对象主要用于软件开发的分析和设计阶段,通常使用UML(统一建模语言)进行建模。
8.2 类和对象
python使用
class关键字定义一个类,类名的首字符一般要大写。类把需要使用的变量和方法组合到一起,这种方式称为封装。类的方法必须有一个
self参数,但是在方法调用时可以不传递这个参数。
8.3 属性和方法
类由属性和方法组成。类的属性是对数据的封装,而类的方法则表示对象具有的行为。类通常由函数和变量组成。python的构造函数,析构函数,私有属性或方法都是通过名称约定区分的。
python的属性分为实例属性和静态属性。实例属性是以
self为前缀的属性。
__init__方法即
python类的构造函数,如果
__init__方法中定义的变量没有使用
self作为前缀声明,则该变量只是普通的局部变量。在
python中静态变量被称为类变量,类变量可以在该类的所有实例中被共享。
class Fruit: price = 0 # 类属性 def __init__(self): self.color = "red" # 实例变量 zone = "China" # 局部变量 if __name__ == "__main__": print(Fruit.price) # 使用类名调用类变量 apple = Fruit() # 实例化 print(apple.color) # 打印apple实例的颜色 Fruit.price = Fruit.price + 10 # 将类变量加10 print ("apple's price:" + str(apple.price)) # 打印apple实例的price banana = Fruit() # 实例化banana print ("banana's price:" + str(banana.price)) # 打印banana实例的price
类的方法也分为公有方法和私有方法。私有方法不能被模块外的类或方法调用,私有方法也不能被外部的类或函数调用。
python的静态方法并有没和类的实例进行名称绑定,要调用只需使用类名作为它的前缀即可。
self参数用于区分函数和类的方法。
python中还有一种方法称为类方法。类方法是将类本身作为操作对象的方法。
构造函数用于初始化类的内部状态,为类的属性默认值。
python的构造函数名为
__init__。
__init__方法除了用于定义实例变量外,还用于程序的初始化。
析构函数用于释放释放对象占用的资源。
python提供了析构函数
__del__()。析构函数可以显示释放对象占用的资源,是另一种资源释放的方式。如果程序中不提供析构函数,
python会在后台提供默认的析构函数,所以应该在只有需要的时候再定义
__del__()。
python采用垃圾回收机制清除对象,
python提供了
gc模块释放不再使用的对象。垃圾回收机制有许多种算法,
python采用的是引用计数的方式。当某个对象在其作用域内引用计数为
0时,
python就会自动清除该对象。垃圾回收机制很好的避免了内存泄漏的发生。
8.4 继承
继承是面向对象的重要特性之一。通过继承可以创建新类,目的是使用或修改现有类的行为。原始的类被称为父类或超类,新类被称为子类或派生类。继承可以实现代码的重用,减少代码的编写。python在类名后使用一对括号表示继承的关系,括号中的类即为父类。如果父类定义了
__init__方法,子类必须显式调用父类的
__init__方法。
子类可以替代父类对象,这种特性称为多态性,由于
python的动态类型,决定了
python的多态性。
python支持多重继承,即1个类可以继承多个父类。多重继承的语法格式如下所示:
class_name(parent_class1, parent_class2...)
其中
class_name是类名,
parent_class1,和
parent_class2是父类名。
相关文章推荐
- Python学习笔记之面向对象
- Dive in Python学习笔记五:对象和面向对象
- Python快速学习05:面向对象
- Python菜鸟学习手册08----面向对象的基本概念
- python语法学习面向对象之继承
- Python学习笔记五(面向对象-类-方法-属性)
- python学习笔记-(8)初识python面向对象
- python学习笔记——第八章 异常
- 《Python 学习手册4th》 第八章 列表与字典
- Python快速学习05:面向对象
- python学习第八章
- 【python学习】之四、面向对象之续
- 【python学习】之四、面向对象
- python学习第四课--面向对象
- python学习(第八章)
- Python学习(八) -- 面向对象
- 【python学习】之四、面向对象
- python学习之路-面向对象的编程
- Python学习笔记十一:面向对象
- python学习:面向对象