在以下示例中:
class Example(dict):
def __init__(self, name):
self.name = name
def get_name(self):
return self.name
ex = Example('ex')
if ex:
print(ex.get_name())
if ex
语句正在评估False
,我没有得到任何输出。是什么导致此实例评估为False
?
答案 0 :(得分:7)
您继承自dict
。 https://jsfiddle.net/anLrwwfa/4/字典(几乎与每个集合一样)取决于它是否包含元素。这适用于列表,集合,字典和字符串(字符串有时被视为有序的字符集合)。此外,许多库都有遵循相同规则的集合(如计数器等)。
你在这里构建一个不包含任何元素的字典。所以真实性是False
。
然而,您可以再次覆盖真实性:
class Example(dict):
def __init__(self, name):
self.name = name
def __bool__(self):
return True
def get_name(self):
return self.name
请注意,您是否发现此类Example(..)
与基础空字典的真实性是您必须自己决定 (当然最好遵循“Python指南”)所以上面的代码片段本身对你的应用程序来说是正确的。这取决于你想用它做什么。
此外,将其他未命名参数(*args
)和命名参数(**kwargs
)传递给字典构造函数以将元素立即添加到基础字典以及修改{{1和/或__repr__
函数。
__str__