2014-11-03 11:09:39 -05:00
|
|
|
# test builtin callable
|
|
|
|
|
|
|
|
# primitives should not be callable
|
|
|
|
print(callable(None))
|
2014-01-22 20:24:53 -05:00
|
|
|
print(callable(1))
|
2014-11-03 11:09:39 -05:00
|
|
|
print(callable([]))
|
2014-01-22 20:24:53 -05:00
|
|
|
print(callable("dfsd"))
|
2014-11-03 11:09:39 -05:00
|
|
|
|
|
|
|
# modules should not be callabe
|
|
|
|
import sys
|
2014-01-22 20:24:53 -05:00
|
|
|
print(callable(sys))
|
2014-11-03 11:09:39 -05:00
|
|
|
|
|
|
|
# builtins should be callable
|
|
|
|
print(callable(callable))
|
|
|
|
|
|
|
|
# lambdas should be callable
|
|
|
|
print(callable(lambda:None))
|
|
|
|
|
|
|
|
# user defined functions should be callable
|
|
|
|
def f():
|
|
|
|
pass
|
|
|
|
print(callable(f))
|
|
|
|
|
|
|
|
# types should be callable, but not instances
|
|
|
|
class A:
|
|
|
|
pass
|
|
|
|
print(callable(A))
|
|
|
|
print(callable(A()))
|
|
|
|
|
|
|
|
# instances with __call__ method should be callable
|
|
|
|
class B:
|
|
|
|
def __call__(self):
|
|
|
|
pass
|
|
|
|
print(callable(B()))
|
|
|
|
|
|
|
|
# this checks internal use of callable when extracting members from an instance
|
|
|
|
class C:
|
|
|
|
def f(self):
|
|
|
|
return "A.f"
|
|
|
|
class D:
|
|
|
|
g = C() # g is a value and is not callable
|
|
|
|
print(callable(D().g))
|
|
|
|
print(D().g.f())
|