自我陈述什么时候是真的,什么时候是假的?

When is self statement true and when is false?

谁能解释一下这个 if self.cards 条件?什么时候为真,什么时候为假?

def __init__(self):
    self.cards = []

def __str__(self):
    if self.cards:
        rep = ""
        for card in self.cards:
            rep += str(card) + " "
    else:
        rep = "<empty>"
    return rep

首先,您可能应该告诉我们什么时候 self.cards 是第一次使用。
假设它是某种容器(listsetdict)如果其中有元素则为真,如果为空则为假。

任何对象都可以在Python中测试真值。以下值被认为是错误的:

None

错误

任何数字类型的零,例如,00L0.00j.

任何空序列,例如,''()[].

任何空映射,例如,{}

用户定义的实例classes,如果class定义了一个__nonzero__()__len__()方法,当该方法returns整数零或布尔值 False.

所有其他值都被视为 true — 因此许多类型的对象始终为 true。

在这种情况下,卡片为空时 False,因为它是一个列表。创建对象时,__init__() 创建卡片空列表,因此创建对象时 if 语句的条件始终为 False