大嘎好!今天的小鲸时间,我们仍然是了解类与实例的相关知识哦~我们来睇一睇类的属性的设定及其修改。
增加属性
还记得上节课我们创建的类City,现在我们来更新一下:
在定义方法__init__()时,与之前的类City中的不同的是,在这里我们除了必备的形参self外,设置了三个形参:name(城市名称)、number(城市行政区划代码)与year(年份)。与之前类似,方法__init__()接受这些形参的值,并将其存储在这个类所创建的实例的属性中。
这里,我们尝试增加一个属性——GDP_year(每年度的GDP),用来储存城市每一年的GDP。
首先,我们对GDP_year设定了一个初始值,用来表示城市2015年的GDP值为1831.38 billion。
self.GDP_year = 1831.38
同时,我们还添加了一个名为GDP的方法,用于显示城市每一年的GDP值。
def GDP(self):
PS.类中的每个属性都必须有初始值,哪怕这个值是0或空字符串。在有些情况下,如对某个属性设置了默认值,就无需包含为它提供初始值的形参,所以在__init__()函数中并未包括GDP这一形参。
到这里来,我们已经把属性GDP添加完成了,现在,我们就来试验一下。根据City类创建一个实例,并存储在变量hometown中。调用方法area和GDP:
最终运行结果如下:
由结果可以看出,广州是广东省的省会,2015年广州的GDP值为1831.38 billion。
修改属性的值
在上一小段我们给City类增加了属性GDP,但是城市的GDP是不断增长的,所以我们必须要设置一个可以修改属性值的办法。在这里,小鲸给大家介绍三种方法来修改属性的值:直接通过实例进行修改;通过方法进行设置;通过方法进行递增(增加特定的值)。
1.直接通过实例进行修改
最简单的修改属性的值的方式就是这一种。例如,我们通过下面的代码直接将GDP更新为2016年的值:
具体流程为使用句号表示法对属性GDP_year赋值,Python在实例hometown中找到该属性,并将它的值设置为1978.21,最终运行结果如下:
2.通过方法进行设置
我们可以定义一个更新属性的方法,这样我们可以不用通过实例修改属性值,它可以自行内部更新,例如在下例中,我们定义了一个update_GDP()的方法:
在类City的最后两行,我们添加了方法update_GDP()。这个方法接受一个GDP值,并将其存储到self.GDP_year中。我们通过调用函数,并向她提供2016年城市的GDP值,可以得到如下输出:
3.通过方法进行递增(增加特定的值)
假设,我们要对GDP进行预测,并不知道其确定的值,那就需要将属性值递增至特定的量,而非设置为全新的值,我们可以定义如下的方法:
在末尾处,我们增加了一个方法increment_GDP()接受一个单位为billion的数字,储存在add_GDP内,并将其叠加到self.GDP_year中,这里的+=表示左边的变量值与右边变量值相加后直接修改左边变量值,相当于直接更新self.GDP。同时我们还定义了方法GDP_next(),用来表示下一年的GDP的值(最终叠加的self.GDP_year)。
接着我们设置实例guangzhou,并调用方法:
我们调用方法hometown.uodate_GDP(),并传递1978.21,将2016年的城市GDP值设置为1978.21billion;同时调用方法increment_GDP(),并传递171.82,来增加2017年相对于2016年增长的GDP量。最终输出:
我们可以看到,这里就实现了GDP的更新,也可以用来预测下一年的GDP值。
小结
今天我们主要学习了两个内容,一是如何在类中增加属性,包括属性的初始值的设定,二是如何修改类中的属性,包括直接对实例赋值进行修改,设置方法对属性进行修改,利用方法实现非确定值(递增/递减)的修改。这些内容可用于数据的更新与预测及定量的一些描述性统计。不知道大家学习的怎么样呢?
关注小鲸融创,一起学习Python,学习金融科技!
本文编辑/yyh