Python 字符串格式化自定义对象

Python 字符串格式化自定义对象,python,string-formatting,python-3.6,Python,String Formatting,Python 3.6,我有一个基本的购物车。我正在尝试学习字符串格式--自定义对象: 我想做的是: print("Your cart contains: {0:short}".format(cart)) 应返回: Your cart contains: cucumbers, tissues, tomatoes, toothpaste 我的格式方法错误。我不断得到: Traceback (most recent call last): File "C:/Users/Mark/PycharmProjects/ma

我有一个基本的购物车。我正在尝试学习字符串格式--自定义对象:

我想做的是:

print("Your cart contains: {0:short}".format(cart))
应返回:

Your cart contains: cucumbers, tissues, tomatoes, toothpaste
我的格式方法错误。我不断得到:

Traceback (most recent call last):
  File "C:/Users/Mark/PycharmProjects/main/main.py", line 54, in <module>
    print("Your cart contains: {0:short}".format(cart))
TypeError: __format__ must return a str, not NoneType

问题出在您的
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
实现中:

def __format__(self, format_type):
    if format == 'short':
        return ', '.join(item.name for item in self.content)
  • 问题1:
    如果格式=='short':

    --------------^-----------
    -应为
    格式\u类型

  • 问题2:
    …(item.name
    )-在
    item
    类上没有属性
    name


正确的定义:

def __format__(self, format_type):
    if format_type == 'short':
        return ', '.join(i.product_name for i in self.content.values())

然后,行
print(“您的购物车包含:{0:short}”。格式(购物车))
将输出:

Your cart contains: Cucumbers, Tissues, Tomatoes, Toothpaste
Your cart contains: Cucumbers, Tissues, Tomatoes, Toothpaste