Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何测试变量是否是特定类的一部分?_Python - Fatal编程技术网

Python 如何测试变量是否是特定类的一部分?

Python 如何测试变量是否是特定类的一部分?,python,Python,另一个初学者问题,我希望你们都能帮助我 我试图比较不同汽车的统计数据。为了做到这一点,我将它们分为不同的类,现在我想把这些类和它们的数字一起比较。我想我对如何进行实际比较有一个大致的想法,但我想知道如何测试变量(甚至让它打印出对象名称)以查看哪个变量属于哪个类 例如,普锐斯在高速公路上行驶了51英里,因此,如果我试图找到最高的mpg车辆,它将是明显的赢家。我想找出一个方法,当我找到那个号码时,我实际上是在谈论普锐斯。也许像“普锐斯:51英里每加仑”或类似的东西 希望这是有道理的。如果没有,我将尽

另一个初学者问题,我希望你们都能帮助我

我试图比较不同汽车的统计数据。为了做到这一点,我将它们分为不同的类,现在我想把这些类和它们的数字一起比较。我想我对如何进行实际比较有一个大致的想法,但我想知道如何测试变量(甚至让它打印出对象名称)以查看哪个变量属于哪个类

例如,普锐斯在高速公路上行驶了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>