0

我意识到还有一百万种其他方法可以解决这个问题,所以我对替代解决方案不太感兴趣,但更多的是为什么这不起作用。

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。

4

3 回答 3

2

您当前的代码只是在 a 上寻找不存在的x属性。Car您需要使用getattr. 不过,首先,您的属性列表应包含适当的名称作为字符串,因此:

for x in ['condition', 'model', 'color', 'mpg']:
    print(getattr(my_car, x))
于 2013-05-08T12:01:50.823 回答
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
于 2013-05-08T12:25:45.300 回答
0

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

于 2013-05-08T13:14:24.553 回答