Python类实例的计算结果为false?

时间:2017-07-19 20:23:39

标签: 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())

if ex语句正在评估False,我没有得到任何输出。是什么导致此实例评估为False

1 个答案:

答案 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__