在我们成长的过程中,不可避免的两个过程:认识世界和交朋友。
首先说说认识世界的过程,在我们很小的时候,在认识新事物的时候只能从自己周围的事物一个一个开始认识,比如,“爸爸”,“妈妈” 。再之后长大一些开始上学以后,慢慢开始形成自己的认识思维,有了自己做事情的步骤。接着进入了社会,很多事情开始变的极度复杂,这个时候自己已经形成了一套属于自己的思维方式,开始去思考这些问题,然后去解决。交朋友的过程也是这样,从一开始的没有朋友,到有了朋友,朋友越来越多,再到知道了什么是好朋友,什么是普通朋友这样的分类。
代码也是这样,我们从一开始学习的基础语法,堆叠功能慢慢地转入到了函数式编程【面向过程编程】,在我们慢慢成长中又转变到了面向对象编程,学习的东西也开始由简单慢慢地转入了复杂,但是这也意味着我们能够运用这些东西去解决更为高级更为复杂的问题了。
说到这里,便可以请出我们今天的主角——面向对象编程了。它是一种更为常用更为高端复杂的编程思想,但是也不是说我们之前学习的函数式编程就没用了,其实他们两个各有利弊,在中小型的项目开发中,大家还是更倾向于用函数式编程,它可以将所有要处理的事情,开始封装成具备一定处理功能的函数,调用执行;而且它作为面向过程编程,更有利于小型项目的开发,让这些项目的运行以及美观程度到达自身的最佳状态。但是在中大型项目开发中这样的开发操作~代码中封装了大量的包含处理步骤的函数开发,代码的逻辑处理方式不够成熟,导致代码高耦合。而面向对象是对面向过程编程的补充和完善,通过对象和对象之间的交互协作完成项目功能的开发,降低代码的耦合度,从而能够使代码的灵活性更高,代码分工更加明确开发效率更高,甚至于代码看上去更加的优雅,毕竟优雅就是python的特点之一。所以在很多的企业级开发中都倾向于面向对象编程思想进行开发。
在面向对象中,我们首先应该声明定义类型:->创建对象->对象有自身的特征、属性(名词|变量)->对象自身的行为(动词|方法(特殊的函数))。
但是这个时候就会有人问了,到底什么是类型什么是对象呢?类型,它是一个名称、一个概念、一个称呼,就比如我们生活中常说的车,衣服,鞋子之类的事物,它是大量有相似特征的事物抽象出来的一个统称;而对象,它就是一种客观存在的具体的事物,就比如车可以分为轿车,越野车,卡车等等,它们每一个都是一个对象,因为它们都是独立客观存在具体因为它们都是独立客观存在拥有具体特征行为的事物。
类型:
首先应该通过一个class关键字定义一个数据类型(又称类型,简称类),
基本语法为:class 类型名称:
类型中的代码
类型名称命名规范:见名知意、驼峰命名法[一个或者多个英文单词组成、每个单词首字母大写]
而且需要通过项目中需要的大量有相似特征和行为的对象,抽象出来的一个数据类型
对象:
对象:有具体特征和行为操作的事物
代码:有具体(特征)属性和(行为)方法的对象-> 事物
类型 VS 对象 区别?
类型:通过对象抽象出来的一个数据类型
类型中需要定义对象需要的特征[属性|变量]和行为[方法]
class Person:
# 定义属性、特征
# 固定写法:在__init__方法中,定义类型的属性
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
# 定义方法、行为
def eat(self, food):
print("吃饭了")
注意1:class 关键字,用来声明定义一个类型,固定写法
注意2:类型中的所有函数,第一个参数self表示当前对象,类似生活中的一个名词:我
注意3:类型中的函数,必须称为方法;
函数 VS 方法 : 两个东西
方法是一种特殊的函数,只能在类型中使用!
注意4:类型中方法,第一个参数:指代的是当前对象~~~一般被声明为self
表示当前对象,调用的时候不需要传递数据给self!
对象:某中类型一个具体存在的事物
代码中的对象,需要通过类型来创建
如:tom = Person('汤姆', 18, '男')
通过 类型名称() 的方式创建对象
创建对象时,自动调用执行__init__()方法,将对象需要的数据传递过去
有了对象,就可以执行对象的行为:调用对象的方法
通过 对象的变量.方法()直接调用
tom.eat("鱼香肉丝")