为什么保时捷的信息不能打印呢
来源:3-7 编程练习
癫某人
2019-04-21 18:10:37
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 self.brand in Car.description: return 1 else: print('请输入您的车辆描述') # 自定义静态方法 提示用户:‘已完成车辆基本参数信息的录入!’ @staticmethod def basic_parameters(): print('已完成车辆基本参数信息的录入!') # 自定义类方法 根据用户车辆的品牌给出相应的合理保养建议 @classmethod def upkeep(cls, desc): if desc in Car.description: print('根据汽车保养的相关经验,{0}品牌的车应于5000km/次的频率进行专业性保养'.format(desc)) else: print('非常抱歉!{0}品牌不在我们的保养范围内'.format(desc)) 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(): Car.upkeep(car_1.brand) # 若if判断条件成立 则调用类方法upkeep()并将对应实例的brand属性传递给参数desc else: print('请正确填写相关的车辆信息') # 当if语句的判断条件不成立时,打印输出并提示用户:‘请正确填写相关的车辆信息’ 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(): Car.upkeep(car_2.brand) # 若if判断条件成立,则调用类方法upkeep()并将对应实例的brand属性传递给参数desc else: print('请正确填写相关的车辆信息') # 当if语句的判断条件不成立时,打印输出并提示用户:‘请正确填写相关的车辆信息’
我的输出是:
已完成车辆基本参数信息的录入!
根据汽车保养的相关经验,大众品牌的车应于5000km/次的频率进行专业性保养
已完成车辆基本参数信息的录入!
请输入您的车辆描述
请正确填写相关的车辆信息
保时捷的信息咋没有打印啊,好尴尬
3回答
慕猿梦
2019-04-22
同学,你好,如下图,在执行步骤1的时候,判断了car_2.modify_des()是否有返回值,然后发现没有返回值,就直接执行了else语句,只有使得有返回值就可以执行解决方案中的步骤3、4
解决方案:
如果我的回答解决了你的疑惑,欢迎采纳!!^_^ 祝学习愉快~~~~~
摘星楼主
2019-04-26
def modify_des(self): if hasattr(self, "desciption"): return True else: print("请输入您的车辆描述") return False
这里用hasattr就能达到题目显示出的结果了
Pinocchio_J
2019-04-25
# 自定义该类的基本车型检索方法 def modify_des(self): if hasattr(self, 'description'): return True else: print("请输入您的车辆描述")
你的modify_des方法用错了。
这样并非是判断类属性desc是否存在类中,而是判断品牌是否存在description列表中。
相似问题