python—面向对象详解(4-1)
【摘要】 python—面向对象详解(4-1)
目录
一.什么是面向对象?
1.前言
- 在开发中经常可以听到两句话,一句是面向函数开发意思是说,我们通过自定义开发一个函数来帮助我们实现所有的业务功能,另一句话是面向对象开发,也就是说通过自定义一个对象,并通过对象来实现所有的业务功能,过去也说过一个对象有属性有方法,但对象一词还是显得非常抽象
- 我们可以认为实例化就是具象化,具体化的意思
- 当我们拥有了一个类,并且类中定义了类属性和类方法的时候,通过实例化一个对象,我们就可以直接通过操作这个对象来获取类变量,以及使用类函数来帮助我们完成相关业务。
- 类中的函数与属性一般都是为了实现一个大的功能而创建在一起的
- 在python的类之中,同级之间的函数是可以互相调用的。但是需要注意的一点就是,两个函数之间调用时只能由一个函数去调用另一个函数,而不能相互的进行调用,否则的话会造成程序的锁的堵塞
二.什么是面向对象编程(类)?
- 利用(面向)对象(属性和方法)去进行编码的过程
- 自定义对象数据类型就是面向对象中的类(class)的概念
三.类的关键字class
- class来声明类,类的名称首字母大写,多单词情况下每个单词首字母大写(驼峰命名法)
拓展
Python应该避免使用驼峰命名,但有特例,特例就出现在类名的定义之中,类名的首字母一定要大写,也可以不用大写,但这是标准,注意类名不要使用中文,类名后面的括弧中是一个单词object,object代表Python中的一个通用对象,在类名后面可以不用加括弧以及括弧内的通用对象的,Python3.0后建议书写,书写通用对象的class会带着更多的内置功能
四.类的定义
在 Python 2 中,对 object 的继承需要显式地写为 Name(object);而在 Python 3 中,这个继承关系是默认的。
五.类的使用
- 在实例化的过程中,Python会将self提前传入需要self函数的括弧中,所以我们在执行的时候并不需要传递,但如果没有实例化,所以Python没办法自动为我们添加self到需要的类函数中,于是就会报错(使用self只是一个规范,也可以替换为其它的字符)
拓展
- 通常我们将代码块中第一层定义的变量(也就是类中函数体外的变量)叫类属性,如果是类函数(也称为实例方法)中定义的变量我们习惯叫它类变量。
- 如果我们想要在类函数中调用类属性,我们就要在这个属性名前加self.就可以了,而我们函数中的self参数有两个功能1.是可以帮助我们调用类属性 2.是将我们这个函数定义到类中,所以如果我们有另一个函数,我们可以在另一个函数中,通过self.调用其他的函数来执行
- 我们将类通过类名执行,并且将它赋予一个变量,称为将类实例化的过程,此时这个变量就是一个类的实例化的对象,我们通过实例化对象加.的形式来调用这个类的属性与函数
- 注意!如果在函数体内定义变量,我们就要通过self.+变量名进行赋值,这样在实例化后或者在其他函数中就可以找到这个变量,不过,与函数同级别,也就是不在函数体内定义的变量,我们称作属性,这种类型的变量并不需要添加self,也可以在函数体内使用,但前提是这个函数必须要self这个参数,且位置不能错误,所以,self这个对象其实就是当前这个类的中间桥梁,通过它我们可以找到这个类的所有变量和函数,并且使用self虽然作为参数传递进去,但更多的是起到类中的各个函数变量相互调用,以及实例化对象,调用类中属性和方法的功能
- self不放在第一个位置它就不是类函数了
注意事项
- 注意!!类函数中有一个默认且必传的参数self,并且一定要书写在类函数的第一个参数位这是Python内部的语法规定
- 注意!!!在类中的属性和函数的缩进要统一
六.面向对象和面向过程的区别
1.面向过程编程
- 面向过程编程的核心是过程,就是分析出实现
需求所需要的步骤,通过函数一步一步实现这
些步骤,接着依次调用即可,再简单理解就是
程序从上到下一步步执行,从头到尾的解决问
题。举例:假设有一辆汽车,它的速度是
80Km/h,要从A地出发到B地,其中AB两地的距离
是200Km。要计算这辆车从A地到B地所花费的时
间,用面向过程实现如下:
- Python是一门面向对象编程,而面向对象编程是
程序员发展的分水岭,尤其对很多初学者来
说,有时会因无法理解面向对象而放弃学习编
程,所以接下来带大家了解面向对象编程思
想:
2.面向对象编程
- 面向对象编程是把构成事物的整个需求按照特
点、功能划分,将这些存在共性的部分封装成
对象,创建对象的目的不是为了完成某一个步
骤,而是为了描述某个事物在整个解决问题的
步骤中的行为。 - Python中一切皆对象,比如之前学过的变量其实
也都是对象,包括整形(int)、浮点型
(float)、字符串(str)、列表(list).元组
(tule)、字典(dict)和集合(set). - 举例:假设有一辆汽车,它的速度是80Km/h,要
从A地出发到B地,其中AB两地的距离是200Km.
要计算这辆车从A地到B地所花费的时间,用面
向对像编程实现如下:
3.面向过程VS面向对象
- 通过以上,可以看出面向过程知面向对象有以下区别:
- 编程思想不同
- 面向过程:是一种以过程为中心的编程思想。
- 面向对象:是一类以对象为核心的编程思想。
- 特点、不同
- 面向过程:主要分析出解决问题所需要的步骤,用函数把这些步骤一步一步实现,使用的时候一个一个依次调用即可。
4.面向对象中常用术语
- 类:可以理解是一个模板,通过它可以创建出无数个具体实例。比如,定义一个Cat类,通过它可以创建出无数个实例来代表各种不同特征的猫
-
- 对象:类并不能直接使用,通过类创建出的实例(又称对象)才能使用,比如以上创建类对象cat。
- 属性:类中的所有变量称为属性。比如以上案例中类的变量有颜色color、体重weight、种类Kind、年龄age
- 方法:类中的所有函数通常称为方法。不过,和函数所有不同的是,类方法至少要包含
一个self参数,类方法无法单独使用,只能和类的对象一起使用,比如以上案例中的方法有eat()、action()、sleep(),创建对象后就可以直接调用类中的方法和属性。 - 面向对象最重要的概念就是类和实例,要牢记类是抽象的模板,而实例是根据类创建出来的
一个个具体的“对象”,每个对象都拥有相同的方法。
面向过程实例
面向对象实例
- 面向对象:核心就是对象,对象就是将程序整合,对象是容器用来盛放数据与功能,优点:可扩展性强,缺点:编程复杂程度高,容易出现过度设计
- 程序 = 数据 + 功能
- 类:类即类别/种类,是面向对象分析和设计的基石,如果多个对象有相以的数据与功能,那么该多个对象就属于同一种类。有了类的好处是:我们可以把同一类对象相同的数据与功能存放到类里,而无需每个对象都重复存一份,这样每个对象里只需存自己独有的数据即可,极大地节省了空间。所以,如果说对象是用来存放数据与功能的容器,那么类则是用来存放多个对象相同的数据与功能的容器。
- 在程序中,必须要事先定义类,然后再调用类产生对象(调用类拿到的返回值就是对象)。产生对象的类与对象之间存在关联,这种关联指的是:对象可以访问到类中共有的数据与功能,所以类中的内容仍然是属于对象的,类只不过是一种节省空间、减少代码冗余的机制,面向对象编程最终的核心仍然是去使用对象。
- 先定义类,后调用类产生对象(调用类的过程又称为实例化)
案例展示:
输出:
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)