aoi*_*iee 2 python dictionary boolean
在以下示例中:
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())
Run Code Online (Sandbox Code Playgroud)
该if ex声明正在评估False,我没有得到任何输出.导致此实例评估的原因是False什么?
你继承了dict.字典的真实性(几乎与每个集合一样)取决于它是否包含元素.这适用于列表,集合,字典和字符串(字符串有时被视为有序的字符集合).此外,许多库都有遵循相同规则的集合(如计数器等).
你在这里构造一个不包含任何元素的字典.所以真实性是False.
然而,您可以再次覆盖真实性:
class Example(dict):
def __init__(self, name):
self.name = name
def __bool__(self):
return True
def get_name(self):
return self.nameRun Code Online (Sandbox Code Playgroud)
请注意,您是否发现Example(..)基础空字典的真实性是您必须自己做出的决定(当然最好遵循"Python的指导原则".)因此上述代码片段本身对您的应用程序不正确.这取决于你想用它做什么.
此外,将其他未命名的arguments(*args)和命名参数(**kwargs)传递给字典构造函数以将元素立即添加到基础字典以及修改__repr__和/或__str__函数可能很有用.
class Example(dict):
def __init__(self, name,*args,**kwargs):
super().__init__(*args,**kwargs)
self.name = name
def __bool__(self):
return True
def get_name(self):
return self.nameRun Code Online (Sandbox Code Playgroud)