mirror of https://github.com/python/cpython.git
[3.11] gh-114552: Update `__dir__` method docs: it allows returning an iterable (GH-114662) (#115235)
gh-114552: Update `__dir__` method docs: it allows returning an iterable (GH-114662)
(cherry picked from commit e19103a346
)
Co-authored-by: Nikita Sobolev <mail@sobolevn.me>
This commit is contained in:
parent
115f72b70b
commit
089cae5158
|
@ -1966,8 +1966,8 @@ access (use of, assignment to, or deletion of ``x.name``) for class instances.
|
|||
|
||||
.. method:: object.__dir__(self)
|
||||
|
||||
Called when :func:`dir` is called on the object. A sequence must be
|
||||
returned. :func:`dir` converts the returned sequence to a list and sorts it.
|
||||
Called when :func:`dir` is called on the object. An iterable must be
|
||||
returned. :func:`dir` converts the returned iterable to a list and sorts it.
|
||||
|
||||
|
||||
Customizing module attribute access
|
||||
|
@ -1987,7 +1987,7 @@ not found on a module object through the normal lookup, i.e.
|
|||
the module ``__dict__`` before raising an :exc:`AttributeError`. If found,
|
||||
it is called with the attribute name and the result is returned.
|
||||
|
||||
The ``__dir__`` function should accept no arguments, and return a sequence of
|
||||
The ``__dir__`` function should accept no arguments, and return an iterable of
|
||||
strings that represents the names accessible on module. If present, this
|
||||
function overrides the standard :func:`dir` search on a module.
|
||||
|
||||
|
|
|
@ -577,6 +577,14 @@ def __dir__(self):
|
|||
self.assertIsInstance(res, list)
|
||||
self.assertTrue(res == ["a", "b", "c"])
|
||||
|
||||
# dir(obj__dir__iterable)
|
||||
class Foo(object):
|
||||
def __dir__(self):
|
||||
return {"b", "c", "a"}
|
||||
res = dir(Foo())
|
||||
self.assertIsInstance(res, list)
|
||||
self.assertEqual(sorted(res), ["a", "b", "c"])
|
||||
|
||||
# dir(obj__dir__not_sequence)
|
||||
class Foo(object):
|
||||
def __dir__(self):
|
||||
|
|
Loading…
Reference in New Issue