diff options
Diffstat (limited to 'tests/basics/builtin_callable.py')
-rw-r--r-- | tests/basics/builtin_callable.py | 42 |
1 files changed, 40 insertions, 2 deletions
diff --git a/tests/basics/builtin_callable.py b/tests/basics/builtin_callable.py index caddb885cf..3ae49f004d 100644 --- a/tests/basics/builtin_callable.py +++ b/tests/basics/builtin_callable.py @@ -1,5 +1,43 @@ -import sys +# test builtin callable + +# primitives should not be callable +print(callable(None)) print(callable(1)) +print(callable([])) print(callable("dfsd")) -print(callable(callable)) + +# modules should not be callabe +import sys print(callable(sys)) + +# 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()) |