В python 2.6.5 экземпляр dbm не имеет метода __nonzero__ или __len__, так почему он оценивает false как логическое значение?
>>> a = dbm.open( 'foo', 'c' ) >>> if a: print 'true' ... >>>
Согласно документации python один из типов значений, который считается ложным, -
любое пустое отображение, например, {}.
{}
Поскольку объект dbm является отображением, а новый экземпляр пуст, поэтому он имеет значение false.
dbm