初识面向对象-python

Python 面向对象

一、概念的区分:

  • 面向过程:根据业务逻辑从上到下写垒代码
  • 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
  • 面向对象:对函数进行分类和封装,让开发“更快更好更强…”

二、面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)

  面向对象编程是一种编程方式,此编程方式的落地需要使用 “类” 和 “对象” 来实现,所以,面向对象编程其实就是对 “类” 和 “对象” 的使用。

    类就是一个模板,模板里可以包含多个函数,函数里实现一些功能

    对象则是根据模板创建的实例,通过实例对象可以执行类中的函数

  书写规范:

    class  类名(object):

       #定义构造函数

       def __init__(self):

         pass

       #定义方法(函数)  

       def sayHi(self):

         print("hello")

  • class是关键字,表示类
  • 创建对象,类名称后加括号即可 
  • 类中的函数第一个参数必须是self
  • 类中定义的函数叫做方法

三、函数

__init__()方法

__init__()是一个特殊方法(special method)。Python里会有一些特殊方法,Python会以特别的方式处理它们。特殊方法的名字的特点是前后都有两个下划线。

__init__()方法的特殊在于,如果你在类中定义了这个方法,一旦你根据这个类建立对象,Python就会自动调用这个方法(这个过程也叫初始化)。

面向对象三大特性

面向对象的三大特性是指:封装、继承和多态。

一、封装

封装,顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容。

所以,在使用面向对象的封装特性时,需要:

  • 将内容封装到某处
  • 从某处调用被封装的内容

第一步:将内容封装到某处

第二步:从某处调用被封装的内容

调用被封装的内容时,有两种情况

  • 通过对象直接调用
  • 通过self间接调用

1、通过对象直接调用被封装的内容

2、通过self间接调用被封装的内容

综上所述,对于面向对象的封装来说,其实就是使用构造方法将内容封装到 对象 中,然后通过对象直接或者self间接获取被封装的内容。

二、继承

继承,面向对象中的继承和现实生活中的继承相同,即:子可以继承父的内容。

例如:

猫可以:喵喵叫、吃、喝、拉、撒

狗可以:汪汪叫、吃、喝、拉、撒

如果我们要分别为猫和狗创建一个类,那么就需要为 猫 和 狗 实现他们所有的功能

动物:吃、喝、拉、撒

猫:喵喵叫(猫继承动物的功能)

狗:汪汪叫(狗继承动物的功能)

所以,对于面向对象的继承来说,其实就是将多个类共有的方法提取到父类中,子类仅需继承父类而不必一一实现每个方法。

注:除了子类和父类的称谓,你可能看到过 派生类 和 基类 ,他们与子类和父类只是叫法不同而已。

  • 是否可以继承多个类
  • 如果继承的多个类每个类中都定了相同的函数,那么那一个会被使用呢?

1、Python的类可以继承多个类,Java和C#中则只能继承一个类

2、Python的类如果继承了多个类,那么其寻找方法的方式有两种,分别是:深度优先广度优先

  • 当类是经典类时,多继承情况下,会按照深度优先方式查找
  • 当类是新式类时,多继承情况下,会按照广度优先方式查找

经典类和新式类,从字面上可以看出一个老一个新,新的必然包含了跟多的功能,也是之后推荐的写法,从写法上区分的话,如果 当前类或者父类继承了object类,那么该类便是新式类,否则便是经典类。

三、多态 

Pyhon不支持多态并且也用不到多态,多态的概念是应用于Java和C#这一类强类型语言中,而Python崇尚“鸭子类型”。

关于Python的多态,就像JavaScript一样,直接访问对象的属性,不需要使用接口,没有类型转换。

对于类型的判断,有抓们的type()函数,和isinstance()函数判断是否某个函数的子类。

总结

以上就是本节对于面向对象初级知识的介绍,总结如下:

  • 面向对象是一种编程方式,此编程方式的实现是基于对  和 对象 的使用
  • 类 是一个模板,模板中包装了多个“函数”供使用
  • 对象,根据模板创建的实例(即:对象),实例用于调用被包装在类中的函数
  • 面向对象三大特性:封装、继承和多态
时间: 2024-11-08 22:17:43

初识面向对象-python的相关文章

Day7 初识面向对象,面向对象之继承与派生

一.面向对象引言 一.面向对象的程序设计的由来 详述见:http://www.cnblogs.com/linhaifeng/articles/6428835.html 二.面向对象引子 写一个简单程序:人狗大战 角色:人.狗 人角色特性:攻击力.生命值.名字.等级 狗角色特性:攻击力.生命值.名字.品种 1.用函数实现功能:角色和技能分别定义不同的函数 1 def person(attack,life_value,name,level): 2 person_dic = {'attack':att

8、python全栈之路-初识面向对象

八.初识面向对象 http://www.cnblogs.com/Eva-J/articles/7293890.html#_label1 1.楔子 #面向对象编程 #面向对象的思想 #对象就是一个实实在在的,可以准确描述出来的实体,比如说egg,alex #面向对象的编程是一种上帝视角的切换 #之前你使用的面向过程的编程是面向结果去编程,一个流水线下来有固定的结果 #好想  可扩展性差 容易引起代码的安全问题 #面向对象 #类:具有相同属性和方法的一类事物 #对象:具有具体的属性的事物 2.初识类

python 初识面向对象

一.初识面向对象 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了写程序的复杂度,只需要顺着要执行的步骤,堆叠代码即可. 缺点是:一套流水线或者流程就是用来解决一个问题,代码牵一发而动全身. 应用场景:一旦完成基本很少改变的场景,著名的例子有Linux內核,git,以及Apache HTTP Server等. 面向对象的程序设计的核心是对象(上帝式思维),要理解对象为何物,必须把自

python初识面向对象

类与对象的关系类: 就是创建对象的第一步,先写类对象: 通过类来创建对象 类是对某事物的归类(类就是对属性和方法的封装)    __init__(self, 参数): 参数一般作为属性设置给对象,对象就是self,对属性的封装,(根据需要,如果在类中传参就用__init__,如果不需要传参,就直在类里定义函数即可)    def 方法(self, 参数): 方法,第一个参数一般是固定的self,当前类的对象创建类:    class 类名: 对象是某类型的一个具体创建对象:    变量 = 类名

python之路---16 初识面向对象

三十五.初识面向对象 一 .面向对象和面向过程比较 ①面向过程:一切以事物的发展流程为核心    优点:负责的问题流程化,编写相对简单 缺点:可扩展性差 ②面向对象:一切以对象为中心. 一切皆为对象. 具体的某一个事务就是对象 优点:可扩展性强 缺点:编程的复杂度高于面向过程 二.类和对象 ①类:就是图纸,创建对象的第一步     对象:通过类造出来的具体事物, ②基本格式 class  类名:            #创建类    类名用驼峰格式 def __init__(self,参数): 

JavaScript对象及初识面向对象

JavaScript对象及初识面向对象:

初识Django —Python API接口编程入门

初识Django -Python API接口编程入门 一.WEB架构的简单介绍 Django是什么? Django是一个开放源代码的Web应用框架,由Python写成.我们的目标是用Python语言,基于Django框架,利用MVC模型,实现后台方面的针对数据库的API开发.先了解一下互联网的WEB架构, 如上图: 互联网的WEB架构大致分为三层,web层.app层和数据库层.Web层:如apache网站服务器:app层主要是应用业务:DB指后台数据库.随着互联网的高速发展,网站访问量的增长.数

Python 初识面向对象#学习猿地

> 面向对象编程——Object Oriented Programming,简称`OOP`,是一种**以对象为中心**的程序设计思想. > > 面向过程编程——Procedure Oriented Programming,简称`POP`,是一种**以过程为中心**的程序设计思想. ## 理解面向过程与面向对象思想 大家先思考一个问题:把大象装进冰箱,需要几步? 小品给出的答案:三步 第一步:打开冰箱门 第二步:把大象装进去 第三步:关上冰箱门 ##### 用面向过程去理解 > 上面

python进阶(4):初识面向对象

一切皆对象! 预习: #仿照正方形类写一个圆形类 class Square: def __init__(self,length_of_side): self.length_of_side = length_of_side def square(self): '面积' return self.length_of_side * self.length_of_side def perimeter(self): '周长' return self.length_of_side * 4 正方形 = Squa