在网上搜的代码答案,这个定义实例不懂:def transport_identify(self, obj, class_base),

在网上搜的代码答案,这个定义实例不懂:def transport_identify(self, obj, class_base),

相关代码:

'''
任务
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( ),判断实例的trans_type属性是否为SUV。若是则打印"类型匹配",反之则打印"类型不匹配"

6、初始化实例对象tool_1,并根据上述效果图调用对应方法
'''

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('我的所属类型为:{},速度:{} km/h,体积:{}'.format(self.trans_type, self.speed, self.size))
# 自定义实例方法move,打印“我已向前移动了50米”
def move(self):
print('我已向前移动了50米')
# 自定义实例方法set_speed,设置对应的速度值
def set_speed(self, new_speed):问题描述:
self.speed = new_speed
# 自定义实例方法get_speed,打印当前的速度值
def get_speed(self):
print('我的时速为:{} km/h'.format(self.speed))
# 自定义实例方法speed_up,实现对实例的加速
def speed_up(self):
old_speed = self.speed
self.speed += 10
print('我的速度由{} km/h提升到了{} km/h'.format(old_speed, self.speed))
# 自定义实例方法speed_down,实现对实例的减速
def speed_down(self):
old_speed = self.speed
self.speed -= 15
print('我的速度由{} km/h下降到了{} km/h'.format(old_speed, self.speed))
# 自定义实例方法transport_identify,实现对实例所属类型的判断
def transport_identify(self, obj, class_base):
if isinstance(obj, class_base):
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(tool_1, Vehicle)

尝试过的解决方式:已查isinstance的用法,但还是不会。

isinstance是Python中的一个内建函数

语法:

isinstance(object, classinfo)

 

如果参数object是classinfo的实例,或者object是classinfo类的子类的一个实例, 返回True。如果object不是一个给定类型的的对象, 则返回结果总是False。

如果classinfo不表示一个类(类型对象), 那么它要么是一个类的元组, 或者递归地包含这样的(由数据类型构成的)元组.其他的序列类型是不被允许的。

如果classinfo不是一种数据类型或者由数据类型构成的元组,将引发一个TypeError异常。

 

举例:

>>> isinstance(1, int)

True

>>> isinstance(1.0, float)

True

>>>isinstance(a,dict)  判断对象a是否为字典,如果为真,会打印True,如为假,打印False。

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学,你好!isinstance() 函数来判断一个对象是否是一个已知的类型

第一个参数是实例对象,第二个参数可以是直接或间接类名、基本类型或者由它们组成的元组。

例:在调用transport_identify()时传入的第一个参数tool_1是实例对象,第二个参数Vehicle是类名,会判断tool_1是否为Vehicle类型

http://img1.sycdn.imooc.com//climg/608b71dc091f0ba007230308.jpg

祝学习愉快!

  • 慕莱坞9224999 提问者 #1

    1、tool_1不是Vehicle类的实例化吗,怎么可以判断是否为Vehicle类型?

    2、那我上面的代码可以实现这个要求吗?

    5、自定义方法 transport_identify( ),判断实例的trans_type属性是否为SUV。若是则打印"类型匹配",反之则打印"类型不匹配"


    2021-04-30 11:53:00
  • 好帮手慕美 回复 提问者 慕莱坞9224999 #2

    同学,你好!

    1、tool_1是通过Vehicle类创建出来的实例,因此toole_1是属于Vehicle类型的

    2、将第5条的描述重新修改了一下,判断实例是否为Vehicle类型。同学的代码是可以的

    http://img1.sycdn.imooc.com//climg/608b9ad00958255205030055.jpg

    祝学习愉快!

    2021-04-30 14:05:00
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师