mirror of
https://github.com/python/cpython.git
synced 2025-08-22 09:45:06 +00:00
Issue #24379: Add operator.subscript() as a convenience for building slices.
This commit is contained in:
parent
755cb0ae8d
commit
47d159f522
4 changed files with 81 additions and 2 deletions
|
@ -17,7 +17,7 @@ __all__ = ['abs', 'add', 'and_', 'attrgetter', 'concat', 'contains', 'countOf',
|
|||
'is_', 'is_not', 'isub', 'itemgetter', 'itruediv', 'ixor', 'le',
|
||||
'length_hint', 'lshift', 'lt', 'matmul', 'methodcaller', 'mod',
|
||||
'mul', 'ne', 'neg', 'not_', 'or_', 'pos', 'pow', 'rshift',
|
||||
'setitem', 'sub', 'truediv', 'truth', 'xor']
|
||||
'setitem', 'sub', 'subscript', 'truediv', 'truth', 'xor']
|
||||
|
||||
from builtins import abs as _abs
|
||||
|
||||
|
@ -408,6 +408,32 @@ def ixor(a, b):
|
|||
return a
|
||||
|
||||
|
||||
@object.__new__ # create a singleton instance
|
||||
class subscript:
|
||||
"""
|
||||
A helper to turn subscript notation into indexing objects. This can be
|
||||
used to create item access patterns ahead of time to pass them into
|
||||
various subscriptable objects.
|
||||
|
||||
For example:
|
||||
subscript[5] == 5
|
||||
subscript[3:7:2] == slice(3, 7, 2)
|
||||
subscript[5, 8] == (5, 8)
|
||||
"""
|
||||
__slots__ = ()
|
||||
|
||||
def __new__(cls):
|
||||
raise TypeError("cannot create '{}' instances".format(cls.__name__))
|
||||
|
||||
@staticmethod
|
||||
def __getitem__(key):
|
||||
return key
|
||||
|
||||
@staticmethod
|
||||
def __reduce__():
|
||||
return 'subscript'
|
||||
|
||||
|
||||
try:
|
||||
from _operator import *
|
||||
except ImportError:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue