再进一步,指定参数默认值的情况下,有时还要对参数值进行改变,比如汽车里程出厂还要测试,运输等等不可能是0就需要修改属性的值。可通过两中方法对属性值进行修改:
一、直接修改属性值;二、通过一定的方法修改属性值。
未修改前、默认属性值如下代码:
一、直接修改属性值:创建实例后。通过给实例里程属性直接赋值的方式实现修改。在初始化描述汽车属性时,相当于把定义参数和给参数赋值并添加到属性中以此实现。在类中这样的属性是存在的,创建实例后自动传递值,也就可以直接进行修改。代码如下:
二、通过方法实现属性值的修改:
1、通过直接在类中更新的方式:定义一个更新里程数据的方法,并对其传递想要改变的值。在创建实例后,对实例使用更新方法并传递值。
汽车里程只能增加,为了防止回调里程以次充好,还需要设置条件禁止回调里程。里程数据不小于0时,将数据赋给属性,反之则打印一条警告信息。
2、通过方法对属性的值进行递增,比如出厂增加了多少里程;二手车购买到登记增加了多少里程等。定义一个增加值的方法,并对其传递里程数据。同样增加值也不能为负以防篡改数据。设置条件,增加里程不为负时,里程数据相加;反之,打印一条警告信息,显示里程数据错误。在实例中调用方法,看是否符合预期。
通过增加方法后可实现属性值的修改和限定,但是依然可以通过直接赋值的方式改变里程数据。任然有回调的可能性。
同样也可以Dog类来实现改名和年龄属性值的修改。
狗的年龄有界限并不是无线大,所以也有条件限制。
以下是原代码,对打印项稍作改动,让输出更直观明了。请忽略文档字符串的错误,实在不想改了。
通过创建实例,对名称属性直接赋值和通过定义改名方法并在实例中调用实现名称的改变;定义年龄的增加方法并设置限制条件,在实例中调用方法实现年龄的递增。
超过年龄的限制条件时,打印提示消息。
一般狗狗的寿命在13—18年间,宠物狗大概在15年左右。怎样增加条件,让不管创建的实例年龄是多少都可以满足限制条件,并且年龄递增时不超出限制条件且年龄只能递增不能回调。
回调的情况:
创建实例不符合条件时:
判别增加值不符合条件时:
正常情况: