成员变量字符串在Python中被视为元组

时间:2014-12-26 08:25:37

标签: python class

我目前正在CodeAcademy的帮助下学习Python。我的问题可能与他们的网络应用程序有关,但我怀疑我在这里是一个非常基本的错误。

如果您想跟随,我指的是CodeAcademy.com - > Python - > 6/11课程

我的代码如下所示:

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)
print my_car.model
print my_car.color
print my_car.mpg
print my_car.condition

假设发生的是,对象my_car的每个成员变量都会在屏幕上打印出来。我原以为conditioncolormodel会被视为字符串,而是被视为Tuple

输出如下:

('DeLorean',) #Tuple
('silver',) #Tuple
88 
new #String
None

这导致验证失败,因为CA期望"白银"但代码返回('silver',)

我的代码中的错误在哪里?

3 个答案:

答案 0 :(得分:59)

__init__,您有:

    self.model = model,
    self.color = color,

这是你如何定义一个元组。将行更改为

    self.model = model
    self.color = color

没有逗号:

>>> a = 2,
>>> a
(2,)

VS

>>> a = 2
>>> a
2

答案 1 :(得分:10)

你的构造函数中的那些属性后面有一个逗号。

删除它们,你就可以在没有元组的情况下获得它

答案 2 :(得分:4)

是的,您必须从实例变量中删除逗号。 from self.model = model, to self.model = model

很高兴看到,您正在使用类变量概念, " condition"是类变量" self.model"," self.color"," self.mpg"是实例变量。