我有一个班级:
class Bike(object):
"""Parent class for bikes"""
def __init__(self, name, weight, cost):
self.name = name
self.weight = weight
self.cost = cost
def model(self):
for trait in self.name:
print trait
def pounds(self):
for trait in self.weight:
print trait
def money(self):
for trait in self.cost:
print trait
我创建了一个包含多个键/值关联的字典:
bikes = {}
# Bike designed for children"
bikes['bike1'] = Bike("Trike", "20", "100")
上面有6辆自行车,
当我尝试运行它们时:
bikes['bike1'].model()
bikes['bike1'].pounds()
bikes['bike1'].money()
我确实得到了名称,重量和成本的打印件,
但它会逐字打印出来:
Ť
[R
我
ķ
ë
2
0
1
0
0
我错过了什么?
答案 0 :(得分:4)
这些行:
for trait in self.name:
print trait
self.name是一个字符串。如果循环遍历字符串,则逐个获取单个字符。因此,您的print语句将逐个打印每个字符。如果要打印模型的名称,只需:
print self.name
这里根本不需要循环。
答案 1 :(得分:2)
for trait in self.name:
print trait
处理trait
作为字符串self.name
中的每个字符,并为字符串中的每个字符执行循环体。所以每个角色都印在一条单独的线上。你想用什么来打印出一个单词和一行中的名字就是这个。您的其他方法和属性也是如此:
def model(self):
print self.name
答案 2 :(得分:0)
它是因为self.name的类型,self.cost是字符串。 如果要将值包装到列表中,则不会遇到该问题 例如
自行车([" Trike"],[" 20"],[" 100"])
其他选项只是在.model(),. pounds(),. money()中打印它们 for loop