程序出现错误
class Vehicle(object): trans_type = 'SUV' def __init__(self,speed,size): self.size = tuple(size) self.speed = int(speed) def show_info(self): print("我的所属类型为:{0},速度:{1}km/h,体积:{2}".format(self.trans_type,self.speed,self.size)) def move(self): print("我已向前移动了50米") def set_speed(self,new_speed): self.set_speed = int(new_speed) def get_speed(self): print("我的时速为:{}km/h".format(self.set_speed)) def speed_up(self): self.up_speed = self.set_speed + 15 print("我的速度由{0}km/h提升到了{1}km/h".format(self.set_speed,self.up_speed)) def speed_down(self): self.drop_speed = self.set_speed - 15 print("我的速度由{0}km/h下降到了{1}km/h".format(self.set_speed,self.drop_speed)) def transport_identify(self, a, b): if isinstance(a, b) == True: 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.set_speed(50) tool_1.speed_down() tool_1.transport_identify(tool_1, Vehicle)
老师,程序出现这种错误怎么修改,是什么原因造成的
正在回答 回答被采纳积分+1
class Vehicle(object): # 自定义Vehicle类属性 tag = "Vehicle" trans_type = "SUV" # 自定义实例的初始化方法 def __init__(self,speed,size): self.__speed = speed self.__size = size # 自定义实例方法show_info,打印实例的速度和体积 def show_info(self): res = "我的所属类型为{0},速度:{1}km/h,体积:{2}。".format(Vehicle.trans_type,self.__speed,self.__size) print(res) print("size",type(self.__size)) return res # 自定义实例方法move,打印“我已向前移动了50米” def move(self): print("我已向前移动50米。") # 自定义实例方法set_speed,设置对应的速度值 def set_speed(self,speed): self.__speed = speed return self.__speed # 自定义实例方法get_speed,打印当前的速度值 def get_speed(self): print("我的时速为{0}km/h".format(self.__speed)) # 自定义实例方法speed_up,实现对实例的加速 def speed_up(self): up = self.__speed + 10 print("我的时速由{0}km/h提升到了{1}km/h。".format(self.__speed,up)) # 自定义实例方法speed_down,实现对实例的减速 def speed_down(self): down = self.__speed - 10 print("我的时速由{0}km/h降低到了{1}km/h。".format(self.__speed,down)) # 自定义实例方法transport_identify,实现对实例所属类型的判断 def transport_identify(self,trans): # 即便所有class中的方法,都要与init中保持一致,添加self res = isinstance(trans,Vehicle) if res == True: print("类型匹配") else: print("类型不匹配") if __name__ == "__main__": tool_1 = Vehicle(20, (3.6, 1.9, 1.75)) # 调用实例方法 打印实例的速度和体积 # print("我的类型为{0},".format(Vehicle.trans_type)) 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(tool_1)
这段代码相对规范,希望可以帮助到你。
同学你好:
这是由于在set_speed方法中顶一个set_speed属性,导致第二次调用时,set_speed不是方法了,而是tool_1对象的属性,所以会报错。
注意:python是动态语言,所有的函数名或者变量的值都是会变的,因此要注意不要同名。
修改:将set_speed这个属性换个名称即可。
修改后的代码:
class Vehicle(object): trans_type = 'SUV' def __init__(self,speed,size): self.size = tuple(size) self.speed = int(speed) def show_info(self): print("我的所属类型为:{0},速度:{1}km/h,体积:{2}".format(self.trans_type,self.speed,self.size)) def move(self): print("我已向前移动了50米") def set_speed(self,new_speed): # self.set_speed = int(new_speed) self.speed = int(new_speed) def get_speed(self): # print("我的时速为:{}km/h".format(self.set_speed)) print("我的时速为:{}km/h".format(self.speed)) def speed_up(self): # self.up_speed = self.set_speed + 15 self.up_speed = self.speed + 15 # print("我的速度由{0}km/h提升到了{1}km/h".format(self.set_speed,self.up_speed)) print("我的速度由{0}km/h提升到了{1}km/h".format(self.speed,self.up_speed)) def speed_down(self): # self.drop_speed = self.set_speed - 15 self.drop_speed = self.speed - 15 # print("我的速度由{0}km/h下降到了{1}km/h".format(self.set_speed,self.drop_speed)) print("我的速度由{0}km/h下降到了{1}km/h".format(self.speed,self.drop_speed)) def transport_identify(self, a, b): if isinstance(a, b) == True: 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.set_speed(50) tool_1.speed_down() tool_1.transport_identify(tool_1, Vehicle)
如果我解决了同学的问题,请采纳!学习愉快^_^。
class Vehicle(object): # 2、设置类属性trans_type(固定值为'SUV')和实例属性速度speed(int 类型,单位为 km/h)、体积size(tuple类型,单位为米。) trans_type = 'SUV' def __init__(self, speed, size): self.speed = int(speed) self.size = tuple(size) # 3、自定义方法 show_info( ),打印实例的所属类型和速度、体积的值; def show_info(self): print('该交通工具的类型:{},速度:{}km/h,体积:{}米'.format(self.trans_type, self.speed, self.size)) def move(self): print('我已向前移动了50米') def set_speed(self, new_speed): self.speed = new_speed def get_speed(self): print('我的时速为:{}km/h'.format(self.speed)) def speed_up(self): last_speed = self.speed self.speed += 10 print('我的速度由{}km/h提升到了{}km/h'.format(last_speed, self.speed)) def speed_down(self): last_speed = self.speed self.speed -= 15 print('我的速度由{}km/h下降到了{}km/h'.format(last_speed, self.speed)) def transport_identify(self, obj): if isinstance(obj, self.__class__): 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.set_speed(50) tool_1.speed_down() tool_1.transport_identify(tool_1)
关键在于set_speed方法传入的参数,还有你设置的set_speed属性也不符合规范,在后面的章节中有@property属性你这个就和方法名冲突了
class Vehicle(object):
# 2、设置类属性trans_type(固定值为'SUV')和实例属性速度speed(int 类型,单位为 km/h)、体积size(tuple类型,单位为米。)
trans_type = 'SUV'
def __init__(self, speed, size):
self.speed = int(speed)
self.size = tuple(size)
# 3、自定义方法 show_info( ),打印实例的所属类型和速度、体积的值;
def show_info(self):
print('该交通工具的类型:{},速度:{}km/h,体积:{}米'.format(self.trans_type, self.speed, self.size))
def move(self):
print('我已向前移动了50米')
def set_speed(self, new_speed):
self.speed = new_speed
def get_speed(self):
print('我的时速为:{}km/h'.format(self.speed))
def speed_up(self):
last_speed = self.speed
self.speed += 10
print('我的速度由{}km/h提升到了{}km/h'.format(last_speed, self.speed))
def speed_down(self):
last_speed = self.speed
self.speed -= 15
print('我的速度由{}km/h下降到了{}km/h'.format(last_speed, self.speed))
def transport_identify(self, obj):
if isinstance(obj, self.__class__):
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.set_speed(50)
tool_1.speed_down()
tool_1.transport_identify(tool_1)
- 参与学习 人
- 提交作业 2727 份
- 解答问题 8160 个
想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星