活动地址:CSDN21天学习挑战赛
一. 面向对象是什么?
在现实生活中,人的思考是抽象的,我们会将遇到的事物抽象化,这时就出现了对象的类型——类。先定义类,然后由类去创建对象,最后由对象去管理程序。就像人类思考一样,先抽象,后实例化,最后去执行。面向对象编程就是一种不断抽象数据和不断抽象方法的过程。
二、什么是对象?
万物皆对象。现实世界中我们能见到的、能触碰到的所有人和事物都是对象,如人、猫、狗、汽车等。在计算机世界里,我们用虚拟的编程代码将现实世界里的事物抽象成对象,然后用面向对象编程思想来解决现实世界中的种种难题。人们在认识世界时,会将对象简单处理为两部分——属性和行为。
对象具有属性,它可以称为状态,也可以称为变量。正如每个工厂有名称、位置、面积、产品等属性,我们可以用这些数据来描述对象的属性。
举例:对象“工厂”的属性
对象具有行为
,也可以称为方法,就如同每个工厂都要能做:检验、组装、包装、出货。面向对象编程将完成某个功能的代码块定义为方法,方法可以被其他程序调用,也可以被对象自身调用。
举例:对象“工厂”的行为
三、面向对象的重要术语
- 类(Class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。
- 类属性:类属性在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外,通常不作为实例变量使用。
- 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖,也称为方法的重写。
- 实例属性:定义在方法中,只作用于当前实例的类。
- 封装:把需要重用的函数或者功能封装,方便其他程序直接调用
- 继承:指一个派生类继承基类的字段和方法。继承也允许把一个派生类的对象作为一个基类地对象对待。
- 多态(polymorphism):一个函数有多种表现形式,调用一个方法有多种形式,但是表现出的方法是不一样的。
- 实例化:创建一个类的实例,一个类的具体对象。
- 方法:类中定义的函数。
- 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
四、类的语法
类必须被定义后才能使用,定义一个类也就是定义这一类对象的模板,定义它的属性和方法。Python中提供了class关键字来声明一个类,class中有成员属性和成员方法。Python中类的定义格式如下:
class [类名]:
[语法块]
定义一个类的3要素:
- 类名:这类事物的名字,满足大驼峰命名法( 说明:每个单词首字母大写)
- 属性:这类事物具有什么样的特征
- 方法:这类事物具有什么样的行为
定义一个类:
需求:
工厂检验区、工厂组装区、工厂包装区、工厂出货区
分析:
定义一个工厂类
定义4个方法:检验、组装、包装、出货
按照需求,不需要定义属性
class Factory:
'''这是一个工厂类'''
def jianyan(self):
print('这是工厂里面负责检验的。')
def zuzhuang(self):
print('这是工厂里面负责组装的。')
def baozhuang(self):
print('这是工厂里面负责包装的。')
def chuhuo(self):
print('这是工厂里面负责出货的。')
factory1=Factory()
factory1.jianyan()
factory1.zuzhuang()
factory1.baozhuang()
factory1.chuhuo()
#下面是输出
'''
这是工厂里面负责检验的。
这是工厂里面负责组装的。
这是工厂里面负责包装的。
这是工厂里面负责出货的。
'''
五、方法中的self参数
由哪一个对象调用的方法,方法内的 self 就是 哪一个对象的引用
- 在类封装的方法内部,self 就表示 当前调用方法的对象自己
- 调用方法时,不需要传递 self 参数
- 在方法内部,通过 self. 访问 对象的属性
- 在类的外部,通过 实例名. 访问 对象的属性和方法
六、__方法名__格式的方法
这种格式的方法是Python提供的内置方法,说明如下:
方法名 | 类型 | 类型 |
---|---|---|
__new__ | 方法 | 创建对象时,会被 自动 调用。用于控制生成一个新实例的过程,它是类级别的方法。至少要有一个参数cls,代表要实例化的类。__new__方法的调用是发生在__init__之前的。 |
__init__ | 方法 | 对象被初始化时,会被 自动 调用。用于初始化一个新实例,控制这个初始化的过程,比如添加一些属性, 做一些额外的操作,发生在类实例被创建完以后。它是实例级别的方法。 |
__del__ | 方法 | 对象被从内存中销毁前,会被 自动 调用。 |
__str__ | 方法 | 返回对象的描述信息,print 函数输出使用。当使用 print 输出对象的时候,只要自己定义了__str__方法,那么就会打印从在这个方法中return的数据。__str__方法需要返回一个字符串,当做这个对象的描述。 |