mirror of
https://github.com/python/cpython.git
synced 2025-11-27 05:44:16 +00:00
Handle old-style instances more gracefully (display documentation on
the relevant class instead of documentation on <type 'instance'>).
This commit is contained in:
parent
0567ba20f3
commit
8ef1cf30b7
1 changed files with 13 additions and 6 deletions
|
|
@ -1448,6 +1448,9 @@ def locate(path, forceload=0):
|
||||||
text = TextDoc()
|
text = TextDoc()
|
||||||
html = HTMLDoc()
|
html = HTMLDoc()
|
||||||
|
|
||||||
|
class _OldStyleClass: pass
|
||||||
|
_OLD_INSTANCE_TYPE = type(_OldStyleClass())
|
||||||
|
|
||||||
def resolve(thing, forceload=0):
|
def resolve(thing, forceload=0):
|
||||||
"""Given an object or a path to an object, get the object and its name."""
|
"""Given an object or a path to an object, get the object and its name."""
|
||||||
if isinstance(thing, str):
|
if isinstance(thing, str):
|
||||||
|
|
@ -1468,7 +1471,11 @@ def doc(thing, title='Python Library Documentation: %s', forceload=0):
|
||||||
desc += ' in ' + name[:name.rfind('.')]
|
desc += ' in ' + name[:name.rfind('.')]
|
||||||
elif module and module is not object:
|
elif module and module is not object:
|
||||||
desc += ' in module ' + module.__name__
|
desc += ' in module ' + module.__name__
|
||||||
if not (inspect.ismodule(object) or
|
if type(object) is _OLD_INSTANCE_TYPE:
|
||||||
|
# If the passed object is an instance of an old-style class,
|
||||||
|
# document its available methods instead of its value.
|
||||||
|
object = object.__class__
|
||||||
|
elif not (inspect.ismodule(object) or
|
||||||
inspect.isclass(object) or
|
inspect.isclass(object) or
|
||||||
inspect.isroutine(object) or
|
inspect.isroutine(object) or
|
||||||
inspect.isgetsetdescriptor(object) or
|
inspect.isgetsetdescriptor(object) or
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue