Python学习笔记七:面向对象初步

面向对象和面向过程的区别_执行者思维_设计者思维

面向对象(Object oriented Programming,OOP)编程的思想主要是针对大型软件设计而来的。面向对象编程使程序的扩展性更强、可读性更好,使得编程可以像搭积木一样简单。

面向对象编程将数据和操作数据相关的方法封装到对象中,组织代码和数据的方式更加接近人的思维,从而大大提高了编程的效率。

Python 完全曹勇了面向对象的思想,是真正面向对象的编程语言,完全支持面向对象的基本功能,例如:继承、多态、封装等等。

Python 中,一切皆对象。我们在前面学习的数据类型、函数等,都是对象。

注意:Python 支持面向过程、面向对象、函数式编程等多种编程范式。

面向对象和面向过程区别

  • 面向过程(Procedure Oriented)思维
    面向过程编程更加关注的是“程序的逻辑流程”,是一种“执行者”思维,适合编写小规模的程序。
    面向过程思想思考问题时,我们首先思考“怎么按步骤实现?”并将步骤对应成方法,一步一步,最终完成。和这个适合简单任务,不需要过多协作的情况下。比如,如何开车?我们很容易就列出实现步骤:
    1发动车 2挂挡 3踩油门 4 走你

  • 面向对象(Object Oriented)思维
    面向对象更加关注的是 “软件中对象之间的关系”,是一种“设计者”思维,适合编写大规模的程序。
    面向对象(Object)思想更契合人的思维模式。我们首先思考的是 “怎么设计这个事物 ?” 比如思考造车,我们就会想“车怎么设计?”,而不是“怎么按步骤造车的问题”。这就是思维方式的转变。

  • 面向对象方式思考造车,发现车由如下对象组成:

  1. 轮胎
  2. 发动机
  3. 车壳
  4. 座椅
  5. 挡风玻璃

为了方便协作,我们找轮胎厂完成制造的步骤,发动机厂完成制造发动机的步骤;这样,发现大家可以同时进行车的制造,最终进行组装,大大提高了效率。但是,具体到轮胎厂的一个流水线操作,仍然是有步骤的,还是离不开面向过程思想!

因此,面向对象可以帮助我们从宏观上把握、从整体上分析整个系统。但是,具体到实现部分的微观操作(就是一个个方法),仍然需要面向过程的思想去处理。

我们千万不要把面向过程和面向对象对立起来。他们是相辅相成的。面向对象离不开面向过程!

面向对象和面向过程的总结

都是解决问题的思维方式,都是代码组织的方式。

解决简单问题可以使用面向过程

解决复杂问题:宏观上使用面向对象那个把握,微观处理上仍然是面向过程的。

对象的进化

随着编程面临的问题越来越复杂,编程语言本身也在进化,从主要处理简单数据开始,随着数据变多进化“数组”;数据类型变复杂,进化出了“结构体”;处理数据的方式和逻辑变复杂,进化出了“对象”。

1. 简单数据

像30,40,50.4 等这些数字,可以看做是简单数据。最初的计算机编程,都是像这样的数字。

2.数组

将同类型的数据放到一起。比如:整数数组[20,30,40],浮点数数组[10.2, 11.3, 12.4],字符串数组:[“aa”,”bb”,”cc”]

3. 结构体

将不同类型的数据放到一起,是C语言中的数据结构。比如:

                struct resume{
                   
                    int age;
                    char name[10];
                    double salary;
                };

4. 对象

将不同类型的数据、方法(即函数)放到一起,就是对象。比如:

class Student:
  
    company = "SXT"     #类属性
    count = 0           #类属性
    def __init__(self,name,score):
        self.name = name         #实例属性
        self.score = score
        Student.count = Student.count+1
  
    def say_score(self):           #实例方法
        print("我的公司是:",Student.company)
        print(self.name,'的分数是:',self.score)

我们前面学习的数字也是对象。比如:整数9,就是一个包含了加法、乘法等方法的对象。

类的定义

我们把对象比作一个“饼干”,类就是制造这个饼干的“模具”。

在这里插入图片描述
在这里插入图片描述

我们通过类定义数据类型的属性(数据)和方法(行为),也就是说,“类将行为和状态打包在一起”。

在这里插入图片描述
对象是类的具体实体,一般称为“类的实例”。类看做“饼干模具”,对象就是根据这个“模具”制造出的“饼干”

从一个类创建对象时,每个对象会共享这个类的行为(类中定义的方法),但会有自己的属性值(不共享状态)。更具体一点:“方法代码是共享的,属性数据不共享”。

在这里插入图片描述

Python中,“一切皆对象”。类也称为 “类对象”,类的实例也称为“实例对象”。
定义类的语法格式如下:

class 类名:
类体

要点如下:

  1. 类名必须符合:“标识符”的规则;一般规定,首字母大写,多个单词使用 “驼峰原则”。
  2. 类体中我们可以定义属性和方法。
  3. 属性用来描述数据,方法(即函数)用来描述这些数据相关的操作。

【操作】一个典型的类的定义

class Student:
  
    company = "SXT"     #类属性
    count = 0           #类属性
    def __init__(self,name,score):
        self.name = name         #实例属性
        self.score = score
        Student.count = Student.count+1
  
    def say_score(self):           #实例方法
        print("我的公司是:",Student.company)
        
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值