如何测试,看看如果一个变量是一类特殊的一部分?

问题描述 投票:0回答:1

另一个初学者问题,我希望大家能帮助我。

我想不同的汽车的统计数据放在一起比较。要做到这一点,我把他们分开所有到不同的类别,现在想利用这些类和他们的数字放在一起比较。我想我就怎么做实际比较的总体思路,但我想知道我怎么可以测试变量(甚至只是在用它打印出的对象名称),看看哪些变量属于哪一类?

例如普锐斯得到高速公路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辆汽车,但是写他们,这有可能是做一个简单的方法...

python
1个回答
1
投票

首先, - 在您的标题的问题,我不知道如果我理解100%你的要求。您可以使用isinstance测试某属于一定的阶级,例如isinstance(3, int)True。或者,如果你定义一个自定义类AaA的一个实例,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)

然后创建这样的模型:

prius = Car('Prius', 51, 48, 11.9)
civic_hybrid = Car('CivicHybrid', 40, 100, 12.3)
...

然后,你可以用不同的指标对它们进行比较(你可以在得到键相比,key可选参数的函数传递),你可以看到他们的品牌

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>
© www.soinside.com 2019 - 2024. All rights reserved.