面向对象:
将数据和操作数据相关的方法封装到对象中,组织代码和数据的方式更接近人的思维方式,以此提高工作效率.
面向对象就是找名词,面向过程找动词.
前者适用于大型的工程思考,后者适合小的程序.(比如,你去开车的过程中,你会1 点火,2 挂挡,3踩油门,4 发动.这就是面向过程,开车就是一个小的程序,所有的想到的过程都是动词.面向过程就是一个大的工程,要你去造车,此时无法将全部细节一一展示,只知道车需要轮胎,车壳,座椅等等,这些都是名词,当然,轮胎怎么做这其中有面向过程的思维,但一开始思考是用面向对象的思维思考)
对象的本质就是把数据和方法放在一起,方法就是用来处理数据 的.
类的定义:
如果把饼干比作一个对象,那么类就是制作这个饼干的模具.(类也是对象,是用来产生对象的对象)
类的结构:
对象的结构:
对象中的方法也就是类里面建好的方法.也就是对象和类里面,方法和属性都是一样的,但是由于传递的数据不一样产生的结果不一样,属性一样,但属性的值不一样.
创建的代码如下:
结果:
构造函数__init__ :
初始化创建好的对象,初始化是指给"属性赋值"
注意:构造函数__init__名称要固定,都为__init__,且所有构造器第一个 参数必须为self.(self指的就是刚刚创建好的实例对象)
通过"类名(参数列表)"来调用构造函数
实例属性:
如图:上面两行代码称为实例属性
实例方法:
def 方法名(self,[形参列表]):
函数体
调用:
对象.方法名([实参列表])
类对象:
所有的类对象都是在一个名为"type"模具下创建,"type"创建不同的类模具(类对象),不同的的模具产生对应的对象.
类属性:
类属性属于类对象中!!!
定义:
class 类名:
类变量名 = 初始值
调用:
类名.类变量名
类方法:
类方法属于"类对象"!!! 通过@classmethod来定义:
@classmethod
def 类方法名(cls [形参列表]):
函数体
静态方法:
在类里面,需要通过类调用
定义:
@staticmethod
def 静态方法名([形参列表]):
函数体
析构方法__del__:
销毁不需要的类对象
代码:
输出:
__call__方法:
定义一个对象并在对象里面加一个方法,即"可调用的对象"
结果
方法没有重载:
python 中方法没有重载,当定义了两个名字一样的方法时,只有最后一个方法有效.
方法的动态性
python是动态语言,可以动态的为类添加新的方法,或者动态的修改已有的方法.
结果:
由图,我们往类中添加了新的方法play_games