diff options
Diffstat (limited to 'Lib/inspect.py')
-rw-r--r-- | Lib/inspect.py | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/Lib/inspect.py b/Lib/inspect.py index 9436e35276..2211b8d4e0 100644 --- a/Lib/inspect.py +++ b/Lib/inspect.py @@ -1561,6 +1561,17 @@ def signature(obj): init = _get_user_defined_method(obj, '__init__') if init is not None: sig = signature(init) + + if sig is None: + if type in obj.__mro__: + # 'obj' is a metaclass without user-defined __init__ + # or __new__. Return a signature of 'type' builtin. + return signature(type) + else: + # We have a class (not metaclass), but no user-defined + # __init__ or __new__ for it + return signature(object) + elif not isinstance(obj, _NonUserDefinedCallables): # An object with __call__ # We also check that the 'obj' is not an instance of |