使用for循环打印类变量

时间:2013-05-08 12:00:57

标签: python python-2.7

我意识到还有其他一百种方法可以解决这个问题,因此我对替代解决方案并不是那么感兴趣,而是为什么这不起作用。

class Car(object):

    condition = 'new'

    def __init__(self, model, color, mpg):
        self.model = model
        self.color = color
        self.mpg = mpg

my_car = Car('DeLorean', 'silver', 88)
for x in [condition, model, color, mpg]:
    print my_car.x

我正在尝试打印my_car.condition,my_car.model,my_car.color和my_car.mpg。

3 个答案:

答案 0 :(得分:2)

您当前的代码只是查找x上的Car属性,该属性不存在。您需要使用getattr进行动态属性查找。不过,首先,您的属性列表应包含相应的名称作为字符串,因此:

for x in ['condition', 'model', 'color', 'mpg']:
    print(getattr(my_car, x))

答案 1 :(得分:0)

如果这是您想要打印所有汽车的订单,那么您可以这样做:

class Car(object):

    condition = 'new'

    def __init__(self, model, color, mpg):
        self.model = model
        self.color = color
        self.mpg = mpg

    def __str__(self):
        return "{} {} {} {}".format(self.condition, self.model, self.color, self.mpg)

my_car = Car('DeLorean', 'silver', 88)
print my_car

答案 2 :(得分:0)

它不起作用,因为没有定义条件,模型,颜色,mpg和my_car.x。