Подтвердить что ты не робот

Строка переменной-члена обрабатывается как Tuple в Python

В настоящее время я изучаю Python с помощью CodeAcademy. Моя проблема может быть связана с их веб-приложением, но мое подозрение в том, что я просто ошибаюсь на очень фундаментальном уровне.

Если вы хотите следовать, я имею в виду CodeAcademy.com → Python → Classes 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 печатается на экране. Я ожидал, что как condition, color и model будут обрабатываться как строка, но вместо этого обрабатываются как Tuple.

Результат выглядит следующим образом:

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

Это приводит к сбою проверки, потому что CA ожидает "серебро", но код возвращает ('silver',).

Где ошибка в моем коде?

4b9b3361

Ответ 1

В вашем __init__ у вас есть:

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

как вы определяете кортеж. Измените строки на

    self.model = model
    self.color = color

без запятой:

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

против

>>> a = 2
>>> a
2

Ответ 2

У вас есть запятая после этих атрибутов в вашей конструкторской функции.

Удалите их, и вы получите его без кортежа

Ответ 3

да, вам нужно удалить запятую из переменных экземпляра. from self.model = model, to self.model = model

Приятно видеть, что вы используете концепцию Class variable, "condition" - это переменная класса, а "self.model", "self.color", "self.mpg" - это переменные экземпляра.