文章目录
Python基础-面向对象
1.编程的分类:
-
面向过程
-
函数式编程
-
面向对象
1.1面向过程
所谓过程就是解决问题的一个步骤,一步一步的按照流程走,有先后顺序。它的整个设计过程就好比流水线,思维上比较机械化。
优缺点:
-
优点:
- 复杂的问题流程化,将问题简化。
-
缺点:
- 拓展性不好,
1.2 面向对象
核心是对象。
定义:
-
对象是一个数据以及相关行为的集合
-
面向对象是功能上指向建模对象
通过数据和行为方式来描述交互对象的集合。
在Python中,一切皆为对象。
优缺点:
-
优点:
- 解决程序的拓展性
-
缺点:
- 复杂度远高于面向过程
- 交互式解决问题,无法准确预测结果
在现实世界中以我们为例
object1: Tom 特征: school=zucc name=tom age=20 sex=male 技能: eat sleep study object2: Nicole 特征: school=zucc name=Nicole age=21 sex=male 技能: eat sleep study sing
类就是类别总类
对象就是特征合技能的统一体
类是这一系列相似对象的特征和技能的结合
对于现实世界,现有个体(对象),才有类型,对于程序,先有类,才有对象
2.面向对象的编程
oop(object oriented programming)
其实是一种程序设计思想。oop把对象作为程序的一个基本单元,一个对象就包含了数据和操作数据的函数。
在Python中,所有数据类型都可以视为对象,同时也可以自定义对象。
自定义对象数据类型就是面向对象中类(class)的概念
demo:
假如要处理学生的成绩。为了表示学生的成绩:
- 面向过程
stu1={
'name':'Tom','score':99}
stu2={
'name':'Nicole','score':23}
利用函数来实现:
def find_score(stu):
print(stu['name'],':',stu[score])
2.1类的定义
类是用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
定义:
class calssname(object):
'dicstring'
class_statement
2.2创建一个空类
类的命名:大驼峰式(变量名称的单词的首字母大写)
class The_First:
pass #相当于一个占位符
类的作用是一个模板,我们可以在创建实例的时候,把一些我们认为必须要绑定的属性填写进去。这时就通过
__init__方法,在创建实例的时候,绑定相关的属性。
在类中定义方法时,第一个参数必须是‘self’
self代表的是实例,而非类。
__init__方法:
- 为对象初始化自己独有的特征
- 该方法中可以有任意的Python代码,但是不能有返回值
2.3类中的概念
- **类变量:**类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
- **数据成员:**类变量或者实例变量, 用于处理类及其实例对象的相关的数据。
- **方法重写:**如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
- **局部变量:**定义在方法中的变量,只作用于当前实例的类。
- **实例变量:**在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。
- **继承:**即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。
- **实例化:**创建一个类的实例,类的具体对象。
- **方法:**类中定义的函数。
- **对象:**通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
2.4数据封装
class Student:
def __init__(self,name,score):
self.name=name
self.score