您的位置:首页 > 编程语言 > Python开发

学习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
是父类名。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息