Python __repr__方法未按预期工作。

问题描述 投票:0回答:2

__repr__ 函数在下面的代码中不起作用。

class Minibar:
    def __init__(self, drinks, snacks):
        self.drinks=drinks
        self.snacks= snacks
        self.bill=0

    def __repr__(self):
        return "The minibar contains the drinks: " + list(str(self.drinks)) +  "And the snacks: "  + list(str(self.snacks)) +  "The bill for the minibar is:" + self.bill**

m = Minibar({'coke': 10, 'lemonade': 7}, {'bamba': 8, 'mars': 12})
print(m)
python python-2.7 oop printing repr
2个回答
0
投票

你没有指定错误,我想解释器不会让你用字符串连接一个列表。

def __repr__(self):
    return "The minibar contains the drinks: " + str(self.drinks) +  "And the snacks: "  + str(self.snacks) +  "The bill for the minibar is:" + str(self.bill)

0
投票

python解释器不允许你用字符串连接一个列表。相反,你可以用下面的命令将列表转换成字符串。str(list) 或迭代列表中的元素。

class Minibar:

    def __init__(self, drinks, snacks):
        self.drinks = drinks
        self.snacks = snacks
        self.bill = 0

    def __repr__(self):
        string = "The minibar contains the drinks: "
        for drink in self.drinks:
            string += drink + " "

        string += "And the snacks: "
        for snack in self.snacks:
            string += snack + " "

        string += "The bill for the minibar is " + str(self.bill)

        return string
© www.soinside.com 2019 - 2024. All rights reserved.