学习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
是父类名。
- 学习python的第四十六天-第八章 面向对象
- java学习--面向对象(第四天)
- 第四章 面向对象
- 面向对象学习第四节
- C的基础上学习C# (第八章--面向对象编程简介)
- 【C++ Primer】【学习笔记】【第八章】标准IO库之:面向对象的标准库
- python学习:面向对象
- Python面向对象学习
- Python学习-面向对象
- 学习python的第四天
- Java学习第四周(2)--面向对象第四天
- JAVA 面向对象第四天
- Python学习--面向对象的实例
- Python的学习笔记DAY5---面向对象
- Python面向对象的学习08
- 第四章 面向对象整理
- 第四章:面向对象(上)
- 第四章 面向对象基础
- H5+C3+JS实现五子棋 - UI篇
- 常用的电平标准
- 欢迎使用CSDN-markdown编辑器
- 求教:如何处理下面图中List集合信息?
- python os.path模块
- 学习python的第四十六天-第八章 面向对象
- 关于EF6.0整理
- Maven错误:was cached in the local repository, resolution will not be reattempted until the update
- Android学习29
- Json性能测试——cJSON vs rapidjson
- iOS打包app发给测试人员测试
- Win10卸载和恢复重装自带应用和应用商店的方法
- 开放-封闭 原则
- 替换List中的某个元素