一.面向对象概述
面向对象编程:Object Oriented Programming(简称OOP)
1、面向对象的概念
<1>面向对象侧重于由谁来做这件事,相比较函数,面向对象是一个更大的封装,根据职责在一个“类”中封装多个“方法”。
<2>完成某一个需求前,首先确定要做的事(这些事就是“方法”)
<3>根据职责确定不同的“对象”,在“对象”内部封装不同的“方法”(多个)
<4>最后完成代码,就是顺序的让不同的“对象”调用不同的“方法”
2、面向对象的特点
<1>注重对象和职责,不同的对象承担的职责不同
<2>更加适合复杂的需求变化
<3>需要在面向过程的基础上,学一些面向对象的语法
3、补充:面向过程的概念
<1>侧重于怎么做这件事
<2>把完成某一个需求的所有步骤从头到尾逐步实现
<3>根据开发要求,将某些功能独立的代码封装成一个又一个函数
<4>最后完成代码,就是顺序的调用不同的函数
二.面向对象的核心概念
面向对象有两个核心概念,一个是类,一个是对象
1、类
(1)什么是类
“类”是一类具有相同特征或行为的事物的一个统称。
比如各种人都属于“人”,各种品种的猫都属于“猫”,各种动物都属于“动物”等。
(2)类由什么构成
理解举例:马冬梅今年19岁,身高170cm,鞋码38,喜欢早上吃包子,喜欢跑步。
<1>属性
属性是这一类事务的共同信息,特征之类。
如例句中:
姓名:马冬梅
年龄:19岁
身高:170cm
鞋码:38
姓名、年龄、身高、鞋码等信息就属于每个人都有的共同信息,每个人都自然带有的信息。
<2>方法
方法是对象具有的行为,就是对象可以去做的事情。
如例句中:
吃包子
跑步
这些就是对象可以去做的事,对象可以选择做或者不做,不同的对象有不同的选择,不是每一个对象都要选择去做。
2、对象
“对象”是由类创建出来的一个具体的存在。
比如我将A加入至“猫”类,A就是属于“猫”类的一个具体的存在,有“猫”类所有的属性,可以使用“猫”类所有的方法。
三.面向对象编程常用方法
1、self的含义
哪一个对象调用的方法,self就是哪一个对象的引用(self指向该对象的内存地址空间),
在调用方法的时候,程序员就不需要传递self参数(在定义方法的时候,第一个参数必须是self,不可更改)
2、定义一个类(此处举的例子为鱼)
# class Fish:
# def eat(self):
# print("鱼是要吃东西的,不然就死了")
# def sleep(self):
# print("鱼当然也是要睡觉的,不然也死了")
#
# nimo=Fish()
# print(nimo)
# #<__main__.Fish object at 0x7f37c335e400>
# nimo.eat()
#### 运行结果
# #鱼是要吃东西的,不然就死了
# nimo.sleep()
# #鱼当然也是要睡觉的,不然也死了
# class Fish:
# def eat(self):
# print("鱼%s是要吃东西的,不然就死了" %(self.name))
# def sleep(self):
# print("鱼%s当然也是要睡觉的,不然也死了" %(self.name))
#
# nimo=Fish()
# nimo.name='nimo'
# nimo.eat()
#### 运行结果
# #鱼nimo是要吃东西的,不然就死了
# aa=Fish()
# aa.name='lala'
# aa.sleep()
# #鱼lala当然也是要睡觉的,不然也死了
3、初始化方法:
类名() 就可以创建一个对象
类名() 创建对象的时候,python解释器会执行哪些操作
# class Fish:
# def __init__(self, name):
# print("这是一个初始化的方法")
# self.name = name
#
# def eat(self):
# print("鱼%s是要吃东西的,不然就死了" % (self.name))
#
# def sleep(self):
# print("鱼%s当然也是要睡觉的,不然也死了" % (self.name))
#### 运行结果
# nimo = Fish('abc')
# nimo.eat()
# # 这是一个初始化的方法
# # 鱼abc是要吃东西的,不然就死了
4、str
str:在python中,使用print输出对象变量的时候,默认情况下这个变量引用的对象是由那一个类创建的对象及其在内存中的地址
如果在开发中希望使用print输出变量的时候能够打印自定义内容,就可以利用__str__这个内置的方法
# class Fish:
# d