member variable string gets treated as Tuple in Python
I am currently learning Python with the help of CodeAcademy. My problem may be related to their web application, but my suspicion is I am just wrong on a very fundamental level here.
If you want to follow along I am referring to CodeAcademy.com -> Python -> Classes 6/11
My code looks like this:
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
What is suppossed to happen, is, that every member variable of the object my_car
gets printed on screen. I was expecting that like condition
, color
and model
would be treated as a string, but instead get treated as a Tuple
.
The output looks like this:
('DeLorean',) #Tuple
('silver',) #Tuple
88
new #String
None
Which leads to the validation failing, because CA expects "silver" but the code returns ('silver',)
.
Where is the error in my code on this?
Solution 1:
In your __init__
, you have:
self.model = model,
self.color = color,
which is how you define a tuple. Change the lines to
self.model = model
self.color = color
without the comma:
>>> a = 2,
>>> a
(2,)
vs
>>> a = 2
>>> a
2
Solution 2:
You've got a comma after those attributes in your constructor function.
Remove them and you'll get it without a tuple