Python: 脚本逐个字母打印字典值而不是整个单词?

Python: Script prints out dictionary value letter by letter instead of full word?

我有一个 class:

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

我创建了一个包含多个 key/value 关联的字典:

bikes = {}

# Bike designed for children"
bikes['bike1'] = Bike("Trike", "20", "100")

6 辆自行车,如上,

当我尝试 运行 他们时:

bikes['bike1'].model()
bikes['bike1'].pounds()
bikes['bike1'].money()

我确实打印了名称、重量和费用,

但是它一个字母一个字母地打印出来:

T

r

k

e

2

0

1

0

0

我错过了什么?

因为self.name、self.cost的类型是string。 如果您将这些值包装到列表中,您将不会遇到这个问题 例如

Bike(["Trike"], ["20"], ["100"])

其他选项只是将它们打印在 .model()、.pounds()、.money() 中而不用 for循环

for trait in self.name:
        print trait

trait 处理为字符串 self.name 中的每个字符,并为字符串中的每个字符执行循环体。所以每个字符都打印在单独的行上。你想用一个词一行打印出名字的是这个。您的其他方法和属性也是如此:

def model(self):
    print self.name

这些行:

        for trait in self.name:
            print trait

self.name 是一个字符串。如果你遍历一个字符串,你会一个一个地得到单个字符。因此,您的 print 语句会逐个打印每个字符。如果要打印模型名称,只需:

print self.name

这里根本不需要循环。