Classes should always evaluate to true when asked for py__bool__()

This commit is contained in:
Dave Halter
2015-04-28 18:32:19 +02:00
parent 607f43290f
commit 712ae01ac0
2 changed files with 20 additions and 6 deletions

View File

@@ -374,6 +374,13 @@ class Wrapper(tree.Base):
def is_class(self): def is_class(self):
return False return False
def py__bool__(self):
"""
Since Wrapper is a super class for classes, functions and modules,
the return value will always be true.
"""
return True
@property @property
@underscore_memoization @underscore_memoization
def name(self): def name(self):
@@ -552,9 +559,6 @@ class Function(use_metaclass(CachedMetaClass, Wrapper)):
else: else:
return FunctionExecution(evaluator, self, params).get_return_types() return FunctionExecution(evaluator, self, params).get_return_types()
def py__bool__(self):
return True
def __getattr__(self, name): def __getattr__(self, name):
return getattr(self.base_func, name) return getattr(self.base_func, name)
@@ -851,6 +855,3 @@ class ModuleWrapper(use_metaclass(CachedMetaClass, tree.Module, Wrapper)):
def __repr__(self): def __repr__(self):
return "<%s: %s>" % (type(self).__name__, self._module) return "<%s: %s>" % (type(self).__name__, self._module)
def py__bool__(self):
return True

View File

@@ -205,3 +205,16 @@ if 0:
foobar foobar
#? #?
nested nested
# -----------------
# True objects like modules
# -----------------
class X():
pass
if X:
a = 1
else:
a = ''
#? int()
a