Python

状课网-少儿编程网课专业平台

Python python青少年编程—灵魂方法__init__()和类方法

发布时间:2021-11-23 17:05:19 浏览 0

各位小伙伴大家好:

上期我们聊到了怎么给类添加和修改属性,本期我们来聊聊python中的构造函数__init__()方法,相对于C++来说python的构造函数要简介的多。

那么,它的作用是什么呢?

在上期的实例中,我们实现两只猫的不同姓名和年龄,是通过修改属性来实现的,代码如下:

python青少年编程—灵魂方法__init__()和类方法

这种方法应付数量比较少的对象还是足够的,但是如果要给很多并且名字还相似的对象赋不同的值,就会有点吃力了。

那么有没有什么方法,能够让对象一产生就可以获得相应的属性值呢?

就好比人一出生就获得了性别、出生日期和出生地等属性,这些属性是一出生就产生的,而不是像名字一样需要等长辈们翻几天字典之后再决定的。

答案就是今天要和大家分享的__init__()方法,也就是构造函数。

来看一个实例代码:

python青少年编程—灵魂方法__init__()和类方法

代码中我们定义一个Dog类,接着就是我们的__init__()方法,它接受三个参数第一个参数是默认的,必须是self,后面两个参数用于接收在对象创建时候我们所传的参数比如“二哈”和10.

来看看结果怎么样:

python青少年编程—灵魂方法__init__()和类方法

运行正常,这样我们就实现了erha所指向的对象一创建就有了名字和年龄,而不是等到在程序运行中再去修改属性来实现。而且程序结构也更清晰,代码也更简洁。

为了加深大家对__init__()方法的理解,我们对代码稍微做点改变。

python青少年编程—灵魂方法__init__()和类方法

和上面的代码相比只增加了一行,用于输出一段文字,来看看看结果:

python青少年编程—灵魂方法__init__()和类方法

在调用每个对象方法之前,都先输出了提示语句。而在代码中我们却并没有显示调用init方法,这是因为在python中,实例化对象的时候会默认优先调用init方法,对对象进行初始化。

看完了我们灵魂方法之后,顺便来了解一下类方法,示例如下:

python青少年编程—灵魂方法__init__()和类方法

第二行 n = 0是定义了一个类属性,这个属性属于类,为所有对象共用。

接下的@classmethod是一个类方法装饰器,它的作用是装饰下面的方法。有关装饰器和迭代器的使用,以后再和大家分享。

装饰器下面是方法num的定义,num(cls)方法里面有一个参数cls,这个参数是类方法的标识,与实例方法中的self不同,且不能省略。

下面我们来看看运行结果:

python青少年编程—灵魂方法__init__()和类方法

实现了类方法的功能,就是程序每实例化一个狗类对象,就将总数量也就是num的值加一。

最后请大家思考一下cls.num和slef.name、slef.age的异同,以及为什么要分别加上cls和self。

本期有关__inti__方法和类方法就为大家分享到这里,我们下期再会。

 

文章来源:创客编程小屋

本文链接:https://www.ascratch.com/news/17521.html

上一篇:python青少年编程—方法如果是内涵,属性就是外表 下一篇:返回列表
相关推荐 更多