Python 类的学习(一)

python类的学习(认识类)

 

在经历了函数、模块与包之后,我们等来了代码复用效率更高的Python中高级应用 —— 类

  可能在接触Python前期会发现解决当前面对的问题,基本上可以通过函数甚至比较基础的表达式完成的干净利落,不过随着学习的深入,会发现网上大牛们的代码自己已经跟不上了(开始也跟不上),而且这其中我能保证见到最多的单词,是接下来这位:“class”!!!

 

在开始讲解之前,我希望大家通过先看一遍明白基础,而后真正实践上手练习自己创建一个类,这样才能发现很多细节部分自己完全不了解,这是再回头来看就好。

另外,如果你想认真的搞清类的来龙去脉,对整体大局有一个认识,请先看上篇博客(OOP的介绍),因为类是python面向对象编程(OOP)中的主人公。

上篇链接:


一、初次拜访

于是,我开始了第一次的拜访。
   百度哥哥告诉我:class是python类的标志性语法,就好比def定义函数时,通过def,告诉computer接下来要定义一个函数,下面缩进部分的语句块就是我函数要干的事。

  class目的之一也是这样,他告诉computer我要定义一个类了,请你给我点空间。于是同样的在class那一行结束后有一大块缩进的语句块来完成类想要实现的事情。

  这是类的基本框架,类似于函数的定义框架。下面放上实物:
在这里插入图片描述
这就是定义的一个类,我们现在先不去理解里面的内容是什么、怎么做,先来大致上对类有个初步的认识(脸熟)。其实,上图中,最重要的部分是首先认识第一行的格式,代表开始类的定义。

 
 

二、再次相见

其实,在类里,本质上就两样东西:属性、方法。

在简单认识了python中类的长相之后,我们来对整个类的定义框架规则进行学习,首先我还是想强调的是,在python面向对象编程中,类是主角,而类中,属性和方法是主角,类的定义围绕属性和方法展开。

- 1、首先还是要强调的是类的第一行:
在这里插入图片描述

在定义类时,先给computer一个信号,告诉它我要创建了,第一行就是这么个作用:
我是类,我叫Student(名字自己起),我继承于object。

 

那么肯定问题来了:object是个啥???

  我们暂且这样记住:在尚未学习到父类子类的阶段下,我们括号里只能写object。
刚刚在(3行前)提到过,括号里写的是定义的类继承于谁,换句话说就是新定义的类他爹是谁!而object简单来说,就是python所有类的父类(爹)。所以在尚未接触父类子类知识前,你定义的所有类的爹,都是object。所以你就写object就得了。

 
- 2、接着是内部语句块的框架:

(1)定义属性。通常情况下,我们推荐首先定义构造函数定义类的属性( __ init __):在这里插入图片描述

构造函数内部,可以定义类的基本属性、方法(此处不了解的还是看看上篇博客,链接在上),也是类属性和方法定义最容易和安全的地方。括号内部要首先声明属性(注意,不用声明方法),然后在调用类(类的实例化)的时候就需要先把参数也输入(这点和定义函数时设定一般参数是一样,必须要传入相应的参数才能调用,所以还是强调类和函数很像的)。

同时,如果足够细心就会发现,

(2)定义方法

类的方法的定义,其实就是定义函数,并通过这个函数来实现类的基本行为,只不过这个函数只能在类的内部定义并且只服务与该类或该类的实例对象。下面我举个例子:

在这里插入图片描述
上图的类定义的是学生的基本信息,在上图中,我们可以发现:构造函数中,我们定义类的属性,而通过def来定义一些基本的方法。例如上述定义的Student类中我定义了检查年龄、检查性别、检查Id是否合理的方法,来实现一些基本的应用。

 
 

第三、类对象与实例对象

        在这里插入图片描述
这个部分还是要结合上章节博客的内容,如果说类对象是车(一个类别),那么实例对象就像是奔驰车、宝马车、大众车等等(具体的车)。

或者说做蛋糕,类就是那个模具,做出来的蛋糕就是实际个体,根据这个模具做的。

类对象是这些车的共有特征的集合或者叫做模板,实例对象就是个体,是独立存在的可以有自己特性但都来源于类的。

总结来说:
    (1)有类才有实例;
    (2)类有的属性和方法实例都有,类没有的属性和方法实例可以自己创建
    (3)实例的出现必须通过实例化实现:类似于函数调用过程
举个例子:在这里插入图片描述
图片的倒数第二行,就是实例化过程(创建实例),生出了一个student的实际个体,然后就可以进行调用方法、属性什么的。上图我就调用其中检查性别的方法玩玩。

调用属性时要通过“xxx.yy”查看。
调用方法就是“xxx.zz( )”,有参数就加入参数。

 

第四、object和self

如果你按照我说的开始了实践创建了一个类,你会有一些地方的疑惑,这其中我首先解释重头戏“object”和“self”。

(1)object

在我的理解中,object是在创建类时第一行中传入的第一个参数(就像自己定义一个函数,有时候需要传入参数才能使用函数一样)

object是全体自定义类的父类(祖先),就是说所有自定义的类都是继承自object这个python已经内嵌的一个类(它本身有自己特殊的属性和方法)

类的创建是必须要传入object(或者其他父类)的,因为面向对象编程的三大特征之一:继承,就是从这个地方体现的。
类的创建是继承的过程,打个不恰当的比喻:就好像生孩子,出生时必须要说明他是谁家的孩子,于是:在这里插入图片描述

当然,如果你明白什么是继承,那你就可以不填object这个祖先。直接填你想继承的类的名字(下面会举例说明)

类的创建开始时就有个括号,你把自己的长辈填上(注意!比喻不恰当在于长辈不仅仅只能填写父母,也可以是其他亲戚长辈)。这代表你可以随意动用他们的资产,也可以说你继承了他们的本领,那么他们的属性、方法你无须定义,直接可以调用而且以自己的名义。举例说明:
在这里插入图片描述
在刚才的基础上,我们创建新的类Student2,括号内表明继承自Student,那么就可以什么也不定义就直接调用Student的属性和方法。
 

(2)self

先记住self的使用是最关键的。

其次,谈谈个人理解,self有点像占位子的作用,在你创建实例的时候,他把实例的名字作为第一个self参数值传入,那么一系列“self.xxx”的属性自动就成了“实例对象.xxx”的意义。

方法也是一样,“实例.方法”的调用就是由于self的参数值就是实例对象名字。

暂且先提及到这个程度,后续会把难度加上来,按部就班的理解。

 
 

第五、总结

通过上面的简单介绍,希望大家首先有个宏观上的认识,希望紧接着大家能够实实在在的创建一个自己的,这样发现问题再回来重新理解。

 

同时,这篇博客只讲解最基础的,接下来的博客会逐渐深入讲解细节和拓展。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值