Excel不相邻列如何打印在一起-英雄云拓展知识分享
112
2023-11-07
【摘要】 本书摘自《Python学习笔记 从入门到实战》一书中第7章,第5节,由张学建编著。
7.5.4 修改属性的值
在 Python 程序中,可以使用如下两种不同的方式修改属性的值。
●直接通过实例进行修改;
●通过自定义方法修改。
在下面的内容中,将详细讲解上述两种修改属性值方法的知识。
1. 直接通过实例进行修改
在 Python 程序中,可以直接通过实例的方式修改一个属性的值。例如在下面的实例代 码中,将霍老板的新车奔驰 E300L 的行驶里程修改为12公里。
实例7-13:通过实例修改霍老板新车的行驶里程
源码路径:下载包\daima\7\7-13
2. 自定义方法修改
在 Python 程序中,可以自定义编写一个专有方法来修改某个属性的值。这时可以无须
直接访问属性,而只是将值传递给自定义编写的方法,并在这个方法内部进行修改即可。例 如在下面的实例代码中,通过自定义方法 update_odometer) 将行驶里程修改为15公里。
实例7-14:通过自定义方法修改霍老板新车行驶里程的方法
源码路径:下载包\daima\7\7-14
实例文件upl.py 的具体实现代码如下所示。
def update_odometer(self,mileage):
##
修改行驶里程
t H H
if mileage >=self.odometer_reading:
self.odometer_reading =mileage
else:
print( "这是一个不合理的数据!")
my_new_car =Car('Benz','E300L',2019)
print(my_new_car.get_descriptive_name())
my_new_car.update_odometer(15)
my_new_car.read_odometer()
在上述实例代码中定义了一个自定义方法 update_odometer(), 此方法可以接受一个行驶 里程值,并将其存储到 self.odometer_reading 中。并且设置在修改属性前检查指定的里程数 据是否合理。如果新指定的里程大于或等于原来的里程 “self.odometer_reading”, 则将里程 数据改为新设置的里程数据。否则就发出提醒,输出“这是一个不合理的数据!”的提示。在 倒数第2行代码中,调用自定义方法 update_odometer()将行驶里程修改为15。
能不能将属性值设置为一个递增值,而不是将其设置为一个具体的值。假设我新买的奔驰 E300L 从提车那天起,到今天为止已经行驶了2000公里,我们可以编写一个自定义方法,在 这个方法中传递这个新增加的2000公里值,这里便通过递增的方式修改了属性值。
例如在下面的实例代码中演示了你的上述修改过程。
实例7-15:通过递增值修改霍老板新车的行驶里程
源码路径:下载包\daima\7\7-15
实例文件up2.py 的具体实现代码如下所示。
****……
def increment_odometer(self,miles):
"""通过递增的方式修改行驶里程。"""
my_new_car =Car('迈巴赫','S800',2019) print(my_new_car.get_descriptive_name()) my_new_car.update_odometer(15)
my_new_car.read_odometer()
my_new_car.increment_odometer(2000)
my_new_car.read_odometer()
在上述实例代码中,使用自定义方法increment_odometer() 接受一个新的行驶里程数字, 并将其加入到 selfodometer reading中。提车时设置的行驶里程是15公里,然后通过 “my new_car.increment_odometer(2000)” 设置从提车到现在又行驶了2000公里,所以通过方法
update_odometer()将现在总的行驶里程修改为2015公里
7.5.5 使用私有属性
在本章前面7.4.5的内容中已经讲解了私有方法的知识,已经了解到只要在属性名或方 法名前加上两个下画线“ ”,那么这个属性或方法就会为私有的了。在 Python 程序中, 私有属性不能在类的外部被使用或直接访问。当在类的内部使用私有属性时,需要通过“self. 属性名”的格式使用。例如在下面的实例中演示了在类内使用私有属性过程。
实例7-16:打印私有属性的值
源码路径:下载包\daima\7\7-16
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~