python – 计算列表中的类型对象

你有一个很好的方法来计算我的高脚杯里的糖数吗?

class Sugar:pass
class Milk:pass
class Coffee:pass

goblet = [Sugar(), Sugar(), Milk(), Coffee()]
sugar_dosage = goblet.count(Sugar) #Doesn't work

解决方法:

您可以使用generator expressionsumisinstance

sum(isinstance(x, Sugar) for x in goblet)
# or
sum(1 for x in goblet if isinstance(x, Sugar))

此外,list.count不起作用,因为该方法测试列表中有多少项等于Sugar.换句话说,它基本上是为列表中的每个项目执行item == Sugar.这是不正确的,因为您想要测试每个项目的类型,这就是实例所做的.

上一篇:python类属性和实例属性


下一篇:[AWS - Design Resilient Architectures] 1.2 Design highly available and/or fault-tolerant architectur