mirror of
https://github.com/python/cpython.git
synced 2025-12-04 00:30:19 +00:00
Make dir() wordier (see the new docstring). The new behavior is a mixed
bag. It's clearly wrong for classic classes, at heart because a classic class doesn't have a __class__ attribute, and I'm unclear on whether that's feature or bug. I'll repair this once I find out (in the meantime, dir() applied to classic classes won't find the base classes, while dir() applied to a classic-class instance *will* find the base classes but not *their* base classes). Please give the new dir() a try and see whether you love it or hate it. The new dir([]) behavior is something I could come to love. Here's something to hate: >>> class C: ... pass ... >>> c = C() >>> dir(c) ['__doc__', '__module__'] >>> The idea that an instance has a __doc__ attribute is jarring (of course it's really c.__class__.__doc__ == C.__doc__; likewise for __module__). OTOH, the code already has too many special cases, and dir(x) doesn't have a compelling or clear purpose when x isn't a module.
This commit is contained in:
parent
95c99e57b3
commit
5d2b77cf31
5 changed files with 207 additions and 65 deletions
|
|
@ -383,14 +383,8 @@ From the Iterators list, about the types of these things.
|
|||
>>> i = g()
|
||||
>>> type(i)
|
||||
<type 'generator'>
|
||||
|
||||
XXX dir(object) *generally* doesn't return useful stuff in descr-branch.
|
||||
>>> dir(i)
|
||||
[]
|
||||
|
||||
Was hoping to see this instead:
|
||||
>>> [s for s in dir(i) if not s.startswith('_')]
|
||||
['gi_frame', 'gi_running', 'next']
|
||||
|
||||
>>> print i.next.__doc__
|
||||
x.next() -> the next value, or raise StopIteration
|
||||
>>> iter(i) is i
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue