Python 如何测试变量是否是特定类的一部分?
另一个初学者问题,我希望你们都能帮助我 我试图比较不同汽车的统计数据。为了做到这一点,我将它们分为不同的类,现在我想把这些类和它们的数字一起比较。我想我对如何进行实际比较有一个大致的想法,但我想知道如何测试变量(甚至让它打印出对象名称)以查看哪个变量属于哪个类 例如,普锐斯在高速公路上行驶了51英里,因此,如果我试图找到最高的mpg车辆,它将是明显的赢家。我想找出一个方法,当我找到那个号码时,我实际上是在谈论普锐斯。也许像“普锐斯:51英里每加仑”或类似的东西 希望这是有道理的。如果没有,我将尽我所能澄清! 我知道这可能是一个简单的答案,但出于某种原因,我想不出这个答案 谢谢大家的帮助Python 如何测试变量是否是特定类的一部分?,python,Python,另一个初学者问题,我希望你们都能帮助我 我试图比较不同汽车的统计数据。为了做到这一点,我将它们分为不同的类,现在我想把这些类和它们的数字一起比较。我想我对如何进行实际比较有一个大致的想法,但我想知道如何测试变量(甚至让它打印出对象名称)以查看哪个变量属于哪个类 例如,普锐斯在高速公路上行驶了51英里,因此,如果我试图找到最高的mpg车辆,它将是明显的赢家。我想找出一个方法,当我找到那个号码时,我实际上是在谈论普锐斯。也许像“普锐斯:51英里每加仑”或类似的东西 希望这是有道理的。如果没有,我将尽
class Impala:
mpg_h = 27
mpg_c = 17
fuel_size = 17
class Prius:
mpg_h = 51
mpg_c = 48
fuel_size = 11.9
class CivicHybrid:
mpg_h = 40
mpg_c = 45
fuel_size = 12.3
def top_mpg(*arg):
high = (max(arg))
top_mpg(Impala.mpg_h, Prius.mpg_h, CivicHybrid.mpg_h)
还有一个额外的问题。。。例如,我如何让我的代码自动将所有不同的类输入到燃料大小的函数中?我计划一次最多比较50辆车,但把它们全部写下来似乎很痛苦,而且可能有一种更简单的方法来做到这一点……首先,对于你标题中的问题,我不确定我是否100%理解你的问题。您可以使用
isinstance
测试某个对象是否属于某个类,例如isinstance(3,int)
是否为True
。或者,如果您定义了一个自定义类a
,并且a
是a
的一个实例,isinstance(a,a)
是True
。如果要测试对象是否具有特定属性,可以使用内置函数hasattr
对其进行测试。例如,python中的字符串有一个方法strip
,那么hasattr('abc','strip')
就是True
你的车似乎有相同的配方——为什么不这样把它们组合在一起呢
class Car:
def __init__(self, make, mpg_h, mpg_c, fuel_size):
self.make = make
self.mpg_h = mpg_h
self.mpg_c = mpg_c
self.fuel_size = fuel_size
def __str__(self):
return '<Car of make {}>'.format(self.make)
然后,您可以将它们与不同的度量进行比较(您可以将获取要比较的键的函数传递给键
可选参数),并且可以查看它们的make
max_mpg_h = max([prius, civic_hybrid], key=lambda x: x.mpg_h)
print(max_mpg_h) # prints <Car of make Prius>
max_mpg_c = max([prius, civic_hybrid], key=lambda x: x.mpg_c)
print(max_mpg_c) # prints <Car of make CivicHybrid>
max\u mpg\u h=max([prius,civic\u hybrid],key=lambda x:x.mpg\u h)
打印(最大打印高度)#打印
max_mpg_c=max([prius,civic_hybrid],key=lambda x:x.mpg_c)
打印(最大打印量)#打印
除非你有这样的任务,否则拥有一个通用的Car
类会更有意义,然后要制造一辆普锐斯,你需要做一些类似Prius=Car(51,48,11.9,“普锐斯”)
。然后你只需要给Car
一个make
字段,然后检查它,看看你在看什么车。为每种不同品牌的汽车上一节课是不可持续的。
max_mpg_h = max([prius, civic_hybrid], key=lambda x: x.mpg_h)
print(max_mpg_h) # prints <Car of make Prius>
max_mpg_c = max([prius, civic_hybrid], key=lambda x: x.mpg_c)
print(max_mpg_c) # prints <Car of make CivicHybrid>