Day23之面向对象编程

点点圈 提交于 2019-11-28 16:34:42

压力好大啊

给自己打气,加油加油猪崽子们!

今日洗脑金句:加油,好好学习,将来找个高薪工作,这样才能随心所欲,否则你只能随薪锁欲!

面向对象编程

一、面向过程编程

面向过程编程的核心是过程二字,过程指的是解决问题的步骤,即先干什么再干什么然后干什么……

基于面向过程编程的思想编写程序好比在设计一条流水线,是一种机械式的思维方式。

  • 优点:复杂的问题流程化、进而简单化
  • 缺点:扩展性差

没错,以上的东西我们之前讲过。

放屁!

对我确实讲过。

今天我们要讲的是更叼的东西,面向对象编程,看着你的老婆打代码,懂吗,哈哈,别听我的,我扯犊子的,面向对象编程就是把什么东西都给实例化成一个对象。

二、面向对象编程

面向对象编程的核心是对象二字,对象是特征与技能的结合体。

基于面向对象编程的思想编写程序,就好比是在创造一个世界,你就是这个世界的上帝,是一种上帝式的思维方式。

  • 优点:可扩展性强
  • 缺点:编程的复杂度要高于面向过程

给你们好好解释一下什么是面向对象编程。

类和对象

一、类和对象

  • 类的意思:种类、分类、类别

对象是特征与技能的结合体,我可能有身高体重、而你也有身高体重,所以你会说你像我,但是你一定不会说你像阿猫阿狗。并且我和你其实就可以说成是一类,而你和选课系统不能说是一类,因此给出类的定义:类就是一系列对象相似的特征与技能的结合体。

在现实世界中:先有一个个具体存在的对象,然后随着人类文明的发展才了分类的概念,既然现实世界中有类这个概念,Python程序中也一定有类这个概念,但是在Python程序中:必须先定义类,然后调用类来产生对象。

二、现实世界中定义类和对象

我来讲一个最常见的类,那就是人类。

我们每个人出生都有自带的属性,都有手有脚,有脑子(虽然我没有),有着人有的属性。每一个人都是这个类的一个实例,就是一个对象。那我们难道就都一样了吗?当然不,我们刚出生时一样,但是后来,我们学会了很多别的东西,这就是后来对象的增加的属性,我们自己加的,这就造成了每个对象的各型各色,就像东方学者学会了内力,日本忍者学会了查克拉,西方修士学会了精神力等等。

这就是一样的对象经过不同的操作后产生的结果。他们都有着类的相同属性,又有着自己的独有属性。

三、程序中定义类和对象

3.1定义类

# 注意类中定义变量使用驼峰体
class OldboyStudent():
    school = 'oldboy'

    def choose_course(self):
        print('is choosing course')

这就是一个类的定义

  • 曾经定义函数,函数只检测语法,不执行代码,但是定义类的时候,类体代码会在类定义阶段就立刻执行,并且会产生一个类的名称空间,也就是说类的本身其实就是一个容器/名称空间,是用来存放名字的,这是类的用途之一

3.2定义对象

stu1=OldboyStudent() # 调用类会得到一个返回值,该返回值就是类的一个具体存在的对象/实例
print(stu1.school)

这就是实例化了一个类,创建了一个对象。

那我们怎么学习忍术,学习查克拉呢??

学你阿妈呢,中国人学什么小日本的东西,跟我学法 轮 功

定制对象独有特征

首先引入这个方法

print(stu.__dict__)

这个可以直接查看这个类中定义好的属性,以一个字典的形式展现出来。

print(stu1.__dict__)

而这个对象中却看不到任何东西,为什么呢,因为他只是一个空的东西,你用这个对象调用的任何属性,都是去类里调用的,所以这里面都是空的,你依然可以调用到东西。

那怎样才能使这个字典里有东西呢?

当然是你后期假如的东西了啊。

比如

stu1.skill='法 轮 功'
print(stu1.__dict__)

这个时候你打印的结果就不是空了,而是多出了一项叫做法 轮 功的技能,这个时候你没有对类造成影响,别的对象也没有这个属性,因为这是你自己发展的结果,所以能理解我之前说过的各型各色的对象的意思了吗?

一、查找属性的顺序

  • 首先从自身查找,没找到往类中找,类中没有则会报错。即对象的属性查找顺序为:自身--》类--》报错
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!