python面向对象

两盒软妹~` 提交于 2020-01-24 00:07:09

1面向对象编程

1.1.什么是面向对象思想

面向对象思想指的是一种编程思想(思想是指想法而不是实现),相对于面向过程而言。只关心哪个对象完成这个功能,它关注的是完成功能的结果。它决定了编写代码的一种习惯和流程。这种思想和语法无关,不同的语言会有不同的实现(python,java,python,c++,js…)。

1.2.面向对象和面向过程的区别

面向过程关注的是完成业务需求需要的步骤,每次完成业务(无论是否相同)都按照步骤一步一步的实现;
面向对象关注是完成业务需求需要的对象(实体),有了对象就可以使用对象上的功能,是一种解决程序复用的设计和编程方法(下次再实现相同的业务直接调用已经实现的实体避免代码的重复)。

2.3.面向对象思想的特点

A.是符合人们思考习惯的一种思想
B.将程序员从执行者转换为指挥者
C.将复杂的事情简单化
面向对象的三大特征:
封装,继承,多态

计算机解决复杂问题的唯一出路 – 面向对象。
在面向对象的世界里:万物皆对象

2.面向对象的语法

2.1.类的概念

例如:
你找了个对象,给你老妈说想带回家,你咋说?
1.通过中文描述现实世界的事物:
外在的特征:外在的属性描述
内在的行为:具备的功能
比如:
手机:
外在特征:颜色,大小,品牌
内在行为:打电话,发短信,上网,玩游戏

2.在计算机中,python需要通过一个类来描述现实世界的事物。
类的定义:类是用来对同一类事物(对象)共有的特征(属性)和行为(方法)的描述(或者抽象)。
现实事物:
外在特征
内在行为
用python中的类描述事物:
class 类名: //使用class关键字加空格,后面加上一对小扩号 加 :(冒号)
//类成员
//属性(字段,变量),定义在类里边。
//方法(函数)
类的声明:
class 类名:
#属性
#方法
def 方法名(self[,参数列表]):
#方法体

3.类的声明注意事项
注意:
4.类名首字母大写 大驼峰规则
5.对象方法的定义和函数类似,也可以设置参数和返回值.但是方法的第一个参数必须为self
6.方法必须写在类的缩进中

2.2.对象的概念

1.什么是对象?
对象是一个具体的实实在在存在的事物,具有属性(特征)和方法(功能,行为)。
2.对象哪里来的?
对象必须通过类创建获得,通过类创建实实在在存在的对象过程叫做实例化。
3. 语法
引用对象的变量 = 类名([参数列表])

2.3.类和对象的关系

和对象的关系就是抽象和具体的关系。在程序语言中想要获取对象必须先要有类。

2.4.使用对象

使用对象实际上是使用对象中的属性和方法,分为两步:
1.先创建对象
phone = Phone()
2.通过.来访问对象中的成员(成员包括属性和方法)。
语法:
对象.成员

2.4.2.使用属性

目标:掌握属性的基本操作
1.添加新属性
语法:
对象.新属性名称 = 属性值
2.获取属性值
语法:
对象.属性名称
3.修改属性值
语法:
对象.旧属性 = 新值

4.删除属性
语法:
del 对象.属性名称

注意:
只能删除对象上已经存在的属性

5.判断属性是否存在或者是属性是否有值
语法:
hasattr(对象,”属性名称”)
返回值: bool 存在True 不存在False

2.4.3.调用方法

学习目标:掌握对象方法的使用
对象中的方法就是对象的功能,对象可以使用这些方法(对象可以调用方法执行).
语法:
对象.方法名()

2.4.4.对象方法中的self

学习目标:
掌握self关键字的使用
对象方法中定义属性
问题1:如何在对象方法中使用对象上的属性和方法呢?
1.类的对象方法中存在一个特殊的关键字self,表示调用该方法的对象.
2.在对象方法中可以通过self获取到调用该方法的对象,从而可以通过self操作对象上的属性和方法.
问题2:调用对象的方法的时候,为什么不需要传递self对象的实参
3.当某个对象调用其方法的时候,不需要传递self对象的实参.因为python解释器(环境)会自动将这个对象作为第一个实际参数传递给方法,所以开发者只需要在定义对象方法时”预留”第一个参数为self即可.

1.1.2.面向对象总结

1.要想得到对象,必须先有类(模板),类是对象的模板,通过模板才能够创建对象。
2.每次例化得到的是一个新对象,占用的是不同的数据空间。
3.定义对象方法的时候第一个形式参数必须使用self占位,调用的时候不需要传self对应的实参,由解释器自动传入。
4.要想访问对象内部的成员(属性和方法),必须先找到对象(如果没就需要实例化),通过操作符号.来访问。

3.初始化__init__()方法 (重点中重点)

4.1.1.什么是初始化方法
概念:init()叫作对象的初始化方法,在创建对象的时候自动调用执行.在类中定义,名字固定
执行时机:在创建对象的时候自动调用执行
作用:我们可以实现该方法,并且在该方法中进行初始化工作(例如:定义属性和设置属性值)
语法:
class 类名:
def init(self[,参数列表]):
#初始化操作
4.1.2.init()自定义参数
1.init(self)除了默认参数self,还可以设置任意个数的⾃定义参数
例 如: init(self,x,y,z)
2.init()方法设置的⾃定义参数必须和创建对象时传递的参数保持⼀致
例如: stu_a = Student(x,y,z)

例如:

4.1.3.为什么要使用__init__()方法
初始化工作:我们通过类创建出来的对象都是一样的,为了区分每个对象的不同我们可以在对象创建之后为每个对象上面的属性设置不同的值。那么这个过程就叫做初始化工作。

问题:
1.当需要初始化对象的属性越多,工作量就越大
2.不能保证每个必要属性被设置值

具有初始化方法的类会在每次创建新对象时先调用__init__()方法,因此在创建对象时,init()方法非常适合在使用对象之前做一些初始化工作。
1.1.3.init()方法常用在哪里
典型使用:
1.开发中,⼀般会在__init__()中定义对象的属性及绑定属性值

优点:
1.更加容易实例化对象,实例化和初始化只需要一条语句就能完成
2.使用起来更安全,确保所有必要属性皆被初始化

5.str()方法
5.1.1.什么是__str__方法
1.如果直接print(object)打印对象,会看到创建出来的对象在内存中的地址
2.当使用 print(object) 输出对象的时候,只要对象的类中定义了 str(self) 方法,就会打印该方法 return的信息描述
3.(了解)在python中方法名如果是__xxxx__()的,那么就有特殊的功能,因此叫做“魔法”方法
注意:
4.名称固定: str()
5.执行时机: 使用print()打印一个对象时,被python自动调用执行。
6.作用:返回对象的描述信息,不至于看地址太枯燥了
7.不能自定义参数

语法:

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!