自我陈述什么时候是真的,什么时候是假的?
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 是第一次使用。
假设它是某种容器(list
、set
或 dict
)如果其中有元素则为真,如果为空则为假。
任何对象都可以在Python中测试真值。以下值被认为是错误的:
None
错误
任何数字类型的零,例如,0
、0L
、0.0
、0j
.
任何空序列,例如,''
、()
、[]
.
任何空映射,例如,{}
。
用户定义的实例classes,如果class定义了一个__nonzero__()
或__len__()
方法,当该方法returns整数零或布尔值 False
.
所有其他值都被视为 true — 因此许多类型的对象始终为 true。
在这种情况下,卡片为空时 False
,因为它是一个列表。创建对象时,__init__()
创建卡片空列表,因此创建对象时 if 语句的条件始终为 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 是第一次使用。
假设它是某种容器(list
、set
或 dict
)如果其中有元素则为真,如果为空则为假。
任何对象都可以在Python中测试真值。以下值被认为是错误的:
None
错误
任何数字类型的零,例如,0
、0L
、0.0
、0j
.
任何空序列,例如,''
、()
、[]
.
任何空映射,例如,{}
。
用户定义的实例classes,如果class定义了一个__nonzero__()
或__len__()
方法,当该方法returns整数零或布尔值 False
.
所有其他值都被视为 true — 因此许多类型的对象始终为 true。
在这种情况下,卡片为空时 False
,因为它是一个列表。创建对象时,__init__()
创建卡片空列表,因此创建对象时 if 语句的条件始终为 False
。