本文共 4527 字,大约阅读时间需要 15 分钟。
私有变量无法直接访问,也无法直接改变,需要通过程序给的可操作接口,进行改变
任务
1、自定义一个交通工具类(Vehicle)
2、设置类属性trans_type(固定值为'SUV')和实例属性速度speed(int 类型,单位为 km/h)、体积size(tuple类型,单位为米。)
3、自定义方法 show_info( ),打印实例的所属类型和速度、体积的值;
4、自定义实例方法如下:
(1)定义move( )方法,实现打印“我已向前移动了50米”
(2)定义set_speed(new_speed)方法,设置对应实例的速度为new_speed km/h
(3)定义get_speed()方法,如果(2)中设置了速度值则打印出来,打印格式为'我的时速为:设置的速度值 km/h'
(4)定义speed_up()方法,设置每次调用时实例的速度都增加10km/h,并打印“我的速度由xx km/提升到了xx km/h”
(5)定义speed_down()方法,设置每次调用时实例的速度都降低15km/h,并打印“我的速度由xx km/下降到了xx km/h”
5、自定义方法 transport_identify( ),判断实例是否为Vehicle类型。若是则打印‘类型匹配’,反之则打印‘类型不匹配’
6、初始化实例对象tool_1,并根据上述效果图调用对应方法
任务提示
类的初始化方法中所传参数size是元组类型,直接传入实例的长,宽,高即可,如size=(10,10,10)
class Vehicle(object): # 自定义Vehicle类属性 trans_type = 'SUV' # 自定义实例的初始化方法 def __init__(self,speed,size): self.speed = speed self.size = size# 自定义实例方法show_info,打印实例的速度和体积 def show_info(self): print('速度:{0}km/h,体积:{1}'.format(self.speed,self.size)) # 自定义实例方法move,打印“我已向前移动了50米” def move(self): print('我已经向前移动了50米') # 自定义实例方法set_speed,设置对应的速度值 def set_speed(self,speed): self.speed = speed # 自定义实例方法get_speed,打印当前的速度值 def get_speed(self): print('我的时速为:{0}km/h'.format(self.speed)) # 自定义实例方法speed_up,实现对实例的加速 def speed_up(self): speed2 = self.speed+10 print('我的速度由{0}km/h提升到了{1}km/h'.format(self.speed,speed2)) self.speed = speed2 # 自定义实例方法speed_down,实现对实例的减速 def speed_down(self): speed3 = self.speed - 15 print('我的速度由{0}km/h下降到了{1}km/h'.format(self.speed,speed3)) self.speed = speed3 # 自定义实例方法transport_identify,实现对实例所属类型的判断 def transport_identify(self): if isinstance(self,Vehicle): print('类型匹配') else: print('类型不匹配')if __name__ == "__main__": tool_1 = Vehicle(20, (3.6, 1.9, 1.75)) # 调用实例方法 打印实例的速度和体积 tool_1.show_info() # 调用实例方法 实现实例的前移 tool_1.move() tool_1.set_speed(40) # 调用实例方法 打印当前速度 tool_1.get_speed() # 调用实例方法 对实例进行加速 tool_1.speed_up() # 调用实例方法 对实例进行减速 tool_1.speed_down() # 调用实例方法 判断当前实例的类型 tool_1.transport_identify()
任务
1、自定义Car类,并重写其构造(初始化)方法__init__( ),将参数l,w,h,brand赋值给实例对象的属性L,W,H,brand。设置类属性description,以列表形式初始化值为:'大众','丰田','广本','沃尔沃', '凯迪拉克'
2、自定义该类实例方法modify_des ( )。功能:判断类属性description是否存在,若存在,直接返回;反之,返回“请输入您的车辆描述”
3、自定义静态方法basic_parameters( )。功能:打印‘已完成车辆基本参数信息的录入!’
4、自定义类方法upkeep( ),并接收参数desc。功能:判断参数desc是否在类属性description之中,若条件成立则打印“根据汽车保养的相关经验,xx品牌的车应于5000km/次的频率进行专业性保养”;反之则打印“非常抱歉!xx品牌不在我们的保养范围内”
5、实例化Car类对象car_1,并调用实例方法basic_parameters()
6、运用if-else结构,调用实例(car_1)方法modify_des( )作为if语句的判断条件,若成立则调用实例的upkeep( )方法,并将实例car_1的brand属性传递给参数desc;反之则打印:'请正确填写相关的车辆信息'
7、实例化Car类对象car_2,并调用实例方法basic_parameters()
8、运用if-else结构,调用实例(car_2)方法modify_des( )作为if语句的判断条件,若成立则调用实例的upkeep( )方法,并将实例car_2的brand属性传递给参数desc;反之则打印:'请正确填写相关的车辆信息'
任务提示
1、判断属性是否存在可以使用hasattr() 函数
2、在自定义类方法upkeep( )时,为了在打印语句中成功获取车辆(实例对象)的brand属性,需在upkeep( )设置一个参数desc接收传递的属性。
class Car(object):# Car类的基本车型设置,列表形式 description = ['大众', '丰田', '广本', '沃尔沃', '凯迪拉克'] # 重写该类的构造方法,并将参数l、w、h、brand赋值给实例对象属性 def __init__(self, l, w, h, brand): self.L = l self.W = w self.H = h self.brand = brand # 自定义该类的基本车型检索方法 def modify_des(self): if hasattr(self, 'description'): return True else: print("请输入您的车辆描述") # 自定义静态方法 提示用户:‘已完成车辆基本参数信息的录入!’ @staticmethod def basic_parameters(): print('已完成车辆基本参数信息的录入') # 自定义类方法 根据用户车辆的品牌给出相应的合理保养建议 @classmethod def upkeep(cls, desc): if desc in cls.description: print('根据汽车保养的相关经验,{0}品牌的车应于5000km/次的频率进行专业性保养'.format(desc)) else: print('非常抱歉,{0}品牌不在我们的保养范围内'.format(desc))if __name__ == '__main__': car_1 = Car(4.2, 1.8, 1.5, '大众') # 调用实例方法:basic_parameters() car_1.basic_parameters() # 利用if语句,调用modify_des()以判断Car的类属性description是否存在 if car_1.modify_des(): # 若if判断条件成立 则调用类方法upkeep()并将对应实例的brand属性传递给参数desc car_1.upkeep(car_1.brand) # 当if语句的判断条件不成立时,打印输出并提示用户:‘请正确填写相关的车辆信息’ else: print('请正确填写相关的车辆信息') car_2 = Car(4.2, 1.8, 1.5, '保时捷') # 调用实例方法:basic_parameters() car_2.basic_parameters() # 利用if语句,调用modify_des()以判断Car的类属性description是否存在 if car_2.modify_des(): # 若if判断条件成立,则调用类方法upkeep()并将对应实例的brand属性传递给参数desc car_2.upkeep(car_2.brand) # 当if语句的判断条件不成立时,打印输出并提示用户:‘请正确填写相关的车辆信息’ else: print('请正确填写相关的车辆信息')
转载地址:http://xcmof.baihongyu.com/