2.16 类与对象详解

2.16 类与对象

2.16.1 面向对象的编程和面向过程的编程

学习之前,我们需要了解什么是“面对对象的编程”。

定义:面向对象编程是一种以对象为中心的编程思想,它在软件设计、数据库设计、网络结构设计、人工智能算法等领域有着非常广泛的应用。

与之相对的是:面向过程的编程。

定义:是一种以过程为中心的编程思想。都是以什么正在发生为主要目标进行编程。

这里你会发现一头雾水,不知所云。我们举个简单的例子来说明两者的区别:

这要从编程语言发展说起:

C,fortran等较早的高级语言因为应用环境简单,系统规模较小采取的是面向过程的思路。

面向过程的编程:总体来说你首先思考的是该干什么,关键字是动词。比如我要起床、刷牙,吃饭,然后上班。重点是聚焦于我们要做什么事情,强调过程。

之后随着系统复杂性提高,C++,java等高级语言,采取了面向对象的思路。
总体来说就是思考由谁去干,关键字是名词。比如我的生活。然后我具有一些属性,比如能够睡觉,能够清洁,需要饮食,需要工作。之后去调用。我.起床,我.刷牙。

比如python语法里面你会经常看到一些变量名.方法,比如我们之前学过的增加append函数:

movie = [‘无问西东’,’肖申克的救赎’,’霸王别姬’]

movie.append(‘假如爱有天意’)

print(movie)

这里movie就是我们说的对象,后面点append是方法(函数只是实现方法的一种工具,服务于方法)

这样来看,面向对象比面向过程简单太多了。因为面向对象是让谁来做,具体怎么完成那是那个人的事,跟我们没关系,我们可以调用方法函数辅助完成。面向过程是怎么做,即一件事我们要完成,怎么完成,方法是什么?

我们今天着重讲面向对象的编程。

简单来讲:

对象 = 属性 + 方法

我们描述一个人(对象),可以从外貌(静态的属性)和行为(动态的方法)来描述,

python里面类的名字通常以大写字母开头。

我们很早接触的类,是数据类型。下面我们可以尝试一下结果:

print(type('1')) # '1'属于字符串类'str'
print(type(1))  # 1属于整数类'int'
print(type([1])) # [1]属于列表类'list'

实例的概念:在Python的术语里,我们把类的个例就叫做实例 (instance),可理解为“实际的例子”。

2.16.2 没有对象又找不到怎么办?那就创建一个

2.16.2.1 类的创建

我和你,都是中国人——这句话里隐藏着一个共识:我们都属于中国人这个类,所以我们(作为实例)存在一些共同点。例如:黑眼睛、黄皮肤、用筷子吃饭、会讲汉语……

而这些共同点,就是我们区别于其他类的依据,细分的话其实可以分成两种。

第一种是描述事物是怎样的,有什么特征,比如黑眼睛、黄皮肤。

第二种是描述事物能做什么,有哪些行为和作用,比如能用筷子吃饭、会讲汉语。

上面我们已经说过:对象 = 属性 + 方法

第一种就是属性,第二种就是方法。

我们举个例子:

class Computer:

    screen = True

    def start(self):
        print('电脑正在开机中……')

在这里插入图片描述

另外我们写函数(方法)的时候,括号里一定留一个self。具体原因就是:self指的是类实例对象本身(注意:不是类本身)。即你要实现你写的实例。

self会接收实例化过程中传入的数据,当实例对象创建后,实例便会代替 self,在代码中运行。

定义self

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值