程序出现错误
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | 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对象的属性,所以会报错。
1 |
注意:python是动态语言,所有的函数名或者变量的值都是会变的,因此要注意不要同名。
修改:将set_speed这个属性换个名称即可。
修改后的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | 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) |
如果我解决了同学的问题,请采纳!学习愉快^_^。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | 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积分~
来为老师/同学的回答评分吧