学习python的第四十六天-第八章 面向对象

来源:互联网 发布:淘宝高颜值零食 编辑:程序博客网 时间:2024/05/14 04:59

第八章 面向对象

使用面向对象的程序设计,能够更好的设计软件架构,维护软件模块,并易于框架和组件的重用。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是父类名。

0 0
原创粉丝点击